首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StatusCode 401在调用PostAsync WebRequest时原因未经授权

StatusCode 401在调用PostAsync WebRequest时原因未经授权
EN

Stack Overflow用户
提问于 2017-04-26 06:57:51
回答 1查看 6.1K关注 0票数 0

我是C# HttpClient课程的新手,希望你们能帮我解决我的问题。当我试图调用StatusCode方法时,我得到了PostAsync 401。这是我的密码

代码语言:javascript
复制
public WebClient(HttpClient httpClient)
    {
        string webHost = ConfigurationManager.AppSettings["webHost"];
        string webApiKey = ConfigurationManager.AppSettings["webApikey"];

        _httpClient = httpClient;
        _httpClient.BaseAddress = new Uri(webHost);
        _httpClient.DefaultRequestHeaders.Accept.Clear();
        _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));

        _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("x-coupa-api-key", "=" + ConfigurationManager.AppSettings["coupaApikey"]);
        System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
    }

public Tuple<bool, Task<HttpResponseMessage>> Comment(comment comment)
    {
        try
        {
            string commentUrl = string.Format("{0}api/comments/", _webHost);
            var responseMessage = _httpClient.PostAsync(commentUrl, CreateHttpContent(comment));
            Log.Error("Response message: " + responseMessage.Result);
            return new Tuple<bool, Task<HttpResponseMessage>>(responseMessage.Result.IsSuccessStatusCode, responseMessage);

        }
        catch (Exception ex)
        {
            Log.Error("Call to Web failed.", ex);
            throw;
        }

    }

private static HttpContent CreateHttpContent(comment data)
    {
        var format = "application/xml";

        return new StringContent(Common.SerializeUtf8(data), Encoding.UTF8, format);
    }

因此,我将一个带有帖子的xml发送到一个get主机--我从PostAsync获得了以下结果:

回复信息:

代码语言:javascript
复制
StatusCode: 401, ReasonPhrase: 'Unauthorized', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Transfer-Encoding: chunked
  Status: 401 Unauthorized
  X-Frame-Options: SAMEORIGIN
  X-XSS-Protection: 1; mode=block
  X-Content-Type-Options: nosniff
  X-Request-Id: 53e17930-f9fe-4ec4-ae5b-b772ce5f308e
  X-Runtime: 0.025822
  Cache-Control: no-cache
  Date: Wed, 26 Apr 2017 06:07:39 GMT
  Content-Type: text/html
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-26 08:44:15

找到了解决办法。不应该使用授权,只需“添加标题”:

代码语言:javascript
复制
_httpClient.DefaultRequestHeaders.Add("x-coupa-api-key", ConfigurationManager.AppSettings["webApikey"]);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43627096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档