【问题标题】:How to get more details on a BadRequest from HttpResponse如何从 HttpResponse 获取有关 BadRequest 的更多详细信息
【发布时间】:2016-07-05 19:04:44
【问题描述】:

我正在尝试连接到公司的 Web 服务,但我收到了一个 BadRequest 值返回。我想这不是一个大问题,我也不是在寻求有关如何解决错误请求的帮助。我遇到的问题是如何获取有关导致它的原因的更多详细信息。所以我有这个 HttpResponseMessage 类变量:

HttpResponseMessage response = c.Post(address, content);
//...fill in content
response = cAssessments.Post(addressInfo, content); //return "Bad Response"

我用正确的内容将它发送到他们的服务器,然后我收到 400 响应,说明“错误请求”。我的问题是如何深入研究该响应变量以确切了解导致它的原因。我想这对我提供信息的服务有一定的依赖,所以我假设它就在某个地方。但是我应该研究那个变量里面的东西是什么?例如:

“response.StatusCode”给了我 400 代码。我还可以查看哪些其他属性?

感谢任何帮助。

【问题讨论】:

    标签: c# web-services httpresponse error-logging


    【解决方案1】:

    用一些有用的提示或可能出错的信息填充 BadRequest 响应的内容完全取决于提供响应的 Web 服务。你不能从你身边做任何事情。

    【讨论】:

      【解决方案2】:

      尝试内容本身,以及原始请求的 URL。

      根据您请求的 API,它们可能会在响应的内容中包含具体导致 400 的原因。

      还有你请求的格式(json vs xml vs 不管)

      【讨论】:

        【解决方案3】:

        这完全取决于服务返回的内容。要检查这一点,您可以阅读响应流:

        using (var stream = response.GetResponseStream ()){
            using (var reader = new StreamReader(stream, Encoding.UTF8)
            {
                 var text = reader.ReadToEnd();
                 // text contains your info
            }
        }
        

        另一个有用的调试选项是使用postman 之类的东西,您可以在其中粘贴您的请求并立即查看完整响应

        如果响应中没有包含任何有用的信息,那么您就会陷入困境,对此您无能为力。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多