【问题标题】:REST api with HttpClient but unknown JSON response带有 HttpClient 但未知 JSON 响应的 REST api
【发布时间】:2012-09-27 21:13:56
【问题描述】:

我正在使用 WebApi httpclient 构建一个 .net api 库以用于 REST Web 服务。

其余服务返回 JSON。

我遇到的问题是,对于一个请求,我可能会返回不同的 JSON 格式。

如果查询成功,我会返回一个 JSON 数组,我已经创建了一个强大的 c# 类型来保存它。

使用 ReadAsAsync 方法将其从内容中取出。

如果请求输入了错误的 api 键或发生其他错误,则其余服务会返回一个 JSON 对象,其中包含一些属性,例如 status=error 和解释消息等。

然后我不能只使用 ReadAsAsync 方法,因为我不知道返回的是什么格式。我对 JSON linq 库了解不多,但有没有办法可以将 JSON 响应放入某个 JSON 持有者对象中,然后检查其中是否存在 status=error,然后对我的强类型使用正确的反序列化。

我似乎可以将它存储在一个 JRaw 对象中,但不知道从这里去哪里。

非常感谢。

【问题讨论】:

    标签: json dotnet-httpclient


    【解决方案1】:

    如果请求输入了错误的 api 键或发生其他错误,则其余服务会返回一个 JSON 对象,其中包含一些属性,例如 status=error 和解释消息等。

    在这种情况下,返回的状态码不会成功。您可以检查状态代码,然后适当地反序列化您的响应内容:

            if (httpResponseMessage.IsSuccessStatusCode)
            {
               // Deserialize your JSON array
            }
            else
            {
               // Deserialize the error
            }
    

    【讨论】:

      【解决方案2】:

      在这种情况下你可以使用错误处理

      try
      {
            //Deserialize your JSON Array..this will throw an exception in case of type mismatch
      }
      catch(Exception e)
      {
           //Deserialize your JSON object which will give you Error code or message
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-30
        • 2019-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多