![](/img/trans.png)
[英]HttpClient System.Net.Http.HttpRequestException: Response status code does not indicate success: 401 (Unauthorized)
[英]Response status code does not indicate success: 401 Tumblr
我想对 Tumblr 实施授权。 在接收 access_token 像这样:
string request_url =
"https://www.tumblr.com/oauth/access_token" + "?" +
"oauth_consumer_key=" + oauth_consumer_key + "&" +
"oauth_token=" + main_oauth_token + "&" +
"oauth_signature_method=" + "HMAC-SHA1" + "&" +
"oauth_signature=" + Uri.EscapeDataString(oauth_signature) + "&" +
"oauth_timestamp=" + oauth_timestamp + "&" +
"oauth_nonce=" + oauth_nonce + "&" +
"oauth_version=" + "1.0" + "&" +
"oauth_verifier=" + oauth_verifier;
HttpClient httpClient = new HttpClient();
string responseBodyAsText = await httpClient.GetStringAsync(request_url);
我收到以下错误:
mscorlib.ni.dll 中发生了“System.Net.Http.HttpRequestException”类型的异常,但未在用户代码中处理
附加信息:响应状态代码不表示成功:401(未授权)。
我设置的回调 URL。 可能是什么问题呢?
问题是您正在发送 GET 请求。 根据规范,您必须将 POST 与标题ContentType: application/x-www-form-urlencoded
。 有关使用 HttpClient 执行此操作的好示例,请参见此处。 请注意,您的名称/值对不是 URL 的一部分,即使它们像查询字符串一样编码。
或者,如果您不介意库依赖项,您可以尝试我的Flurl库,它将代码缩短为:
string responseBodyAsText = await "https://www.tumblr.com/oauth/access_token"
.PostUrlEncodedAsync(new {
oauth_consumer_key = oauth_consumer_key,
oauth_token = main_oauth_token,
oauth_signature_method = "HMAC-SHA1",
oauth_signature = oauth_signature,
oauth_timestamp = oauth_timestamp,
oauth_nonce = oauth_nonce,
oauth_version = "1.0",
oauth_verifier = oauth_verifier
})
.ReceiveString();
Flurl 在NuGet上可用。
EnsureSuccessStatusCode()
也可以生成相同的错误。 检查您是否正在使用它,如果是,请确保您的服务器身份验证正确无误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.