我目前正在 VS Code 中从 Postman 切换到 Thunder Client。我从 Postman 发出的大多数请求在 Thunder 客户端中都没有出现问题。但目前我陷入了一个特定的要求。该请求是一个 POST 请求,用于选择承载令牌并使用内容类型“application/x-www-form-urlencoded”。
在 Postman 中,请求正常工作 授权:带有用户名和密码的“基本身份验证”(是的,您需要两个不同的 API 密码和用户) 标题:内容:application/x-www-form-urlencoded 正文(x-www-from-urlencoded 选项):
grant_type密码
用户名 {{用户名}}
密码{{密码}}
在 Thunderclient 中没有 x-www-from-urlencoded 选项。因此,我认为“表单选项”(Chat GBT 告诉我该选项应该有效)或“文本选项”应该有效。根据 API 的文档,内容标头必须是
application/x-www-form-urlencoded
,所以我无法将其更改为 Json 之类的内容。
如果我将以下内容放入“表单”选项中(基本上与 Postman 中相同,是的,我已相应地设置了环境变量并使用真实密码和用户对其进行了测试):
grant_type密码
用户名 {{用户名}}
密码{{密码}}
我得到:
{
"error": "invalid_request",
"error_description": "The token request must specify a 'grant_type'. Valid values: [password]"
}
此外,如果我尝试将
grant_type=password
放入文本选项中,我也会收到相同的错误。 (是的,我也尝试过使用带密码和不带密码的多种变体。但是根据这篇post,这应该是正确的语法。我还尝试了将键和值放在引号中的所有可能组合。
从错误消息中我可以读到,他以某种方式找不到 grant_type 的值,但我不明白为什么。 我唯一的想法就是以某种方式查看完成的消息以了解正文的外观。但我还不知道该怎么做。
使用身体
Form-encode
Postman与迅雷客户端的body输入类型对比表
邮差 | 迅雷客户端 |
---|---|
表单数据 | 表格 |
x-www-form-urlencoded | 表单编码 |
原始 | JSON |
二进制 | 二进制 |
GraphQL | GraphQL |
在这里
通过 Docker Compose 启动 Keycloak Postman 的 Keycloak Master Token 示例