【发布时间】:2020-11-14 04:33:30
【问题描述】:
有这样一段代码:
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url);
request.Headers.TryAddWithoutValidation("User-Agent", userAgent);
request.Content = new StringContent("{" +
$"\"grant_type\":\"authorization_code\"," +
$"\"client_id\":\"*****\"," +
$"\"client_secret\":\"****\"," +
$"\"code\":\"{autorizationCode}\"," +
$"\"redirect_uri\":\"urn:ietf:wg:oauth:2.0:oob\"" +
"}", Encoding.UTF8);
var response = await client.SendAsync(request);
Token = response.Content.ReadAsStringAsync().Result.ToString();
}
当我发送请求时,它给了我一个错误 - "{"error":"invalid_request","error_description":"Missing required parameter: grant_type."}",但 grant_type 存在。
网站上的请求如下所示:
curl -X POST "https://site/oauth/token" \
-H "User-Agent: APPLICATION_NAME" \
-F grant_type="authorization_code" \
-F client_id="CLIENT_ID" \
-F client_secret="CLIENT_SECRET" \
-F code="AUTORIZATION_CODE" \
-F redirect_uri="REDIRECT_URI"
他为什么给出这个错误?我该如何解决?
【问题讨论】:
-
这能回答你的问题吗? Load JSON string to HttpRequestMessage
-
您需要将内容类型设置为
"application/json"。我也不会像这样自己构建 JSON,使用 JSON 序列化器,如 Json.Net -
omg,谢谢,当我在 mediaType StringContent 中添加“application/json”时它起作用了。
标签: c# json http curl httpclient