【问题标题】:Get JSON response using RestSharp使用 RestSharp 获取 JSON 响应
【发布时间】:2014-04-15 14:34:53
【问题描述】:

我是 C# 新手,我正在尝试使用 RestSharp 从 REST 请求中获取 JSON 响应; 我要执行的请求如下:"http://myurl.com/api/getCatalog?token=saga001"。如果我在浏览器中执行它会很好。

我试过了:

var client = new RestClient("http://myurl.com/api/");

var request = new RestRequest("getCatalog?token=saga001"); 

var queryResult = client.Execute(request);

Console.WriteLine(queryResult);

我得到的是“RestSharp.RestReponse”,而不是我想要的 JSON 结果。

感谢您的帮助!

【问题讨论】:

    标签: c# json rest restsharp


    【解决方案1】:

    试试:

    var client = new RestClient("http://myurl.com/api/");
    
    var request = new RestRequest("getCatalog?token={token}", Method.GET); 
    
    request.AddParameter("token", "saga001", ParameterType.UrlSegment);   
    
    // request.AddUrlSegment("token", "saga001"); 
    
    request.OnBeforeDeserialization = resp => { resp.ContentType = "application/json"; };
    
    var queryResult = client.Execute(request);
    
    Console.WriteLine(queryResult.Content);
    

    【讨论】:

    • 我得到了同样的结果。
    • 我测试了一下,结果还是一样,真的很奇怪
    • 如果您调试您的应用程序,您的queryResult RestSharp.RestReponse 对象会公开哪些属性?我想你可以写信给控制台ContentData 属性。
    • 写入控制台 Content 属性是解决方案,谢谢 :)
    • request.OnBeforeDeserialization = resp => { resp.ContentType = "application/json"; }; 为我完成了这项工作。问题是,响应的内容类型是text/html。我猜 RestSharp 然后尝试使用 XML 反序列化
    【解决方案2】:

    尝试如下:

    var client = new RestClient("http://myurl.com/api/");
    
    client.ClearHandlers();
    var jsonDeserializer = new JsonDeserializer();
    client.AddHandler("application/json", jsonDeserializer);
    
    var request = new RestRequest("getCatalog?token=saga001"); 
    
    var queryResult = client.Execute(request);
    
    Console.WriteLine(queryResult);
    

    【讨论】:

      【解决方案3】:

      这很旧,但我也在为此苦苦挣扎。这是我找到的最简单的方法。

      var client = new RestClient("http://myurl.com/api/");
      var request = new RestRequest("getCatalog?token=saga001"); 
      var response = client.Execute(request);
      
      if (response.StatusCode == HttpStatusCode.OK)
      {
          // Two ways to get the result:
          string rawResponse = response.Content;
          MyClass myClass = new JsonDeserializer().Deserialize<MyClass>(response);
      }
      

      【讨论】:

        【解决方案4】:

        如果要将结果保存到 JSON 文件中: 您应该使用这些命名空间:

        using RestSharp;

        using Newtonsoft.Json;

        using Newtonsoft.Json.Linq;

        var client = new RestClient("http://myurl.com/api/");
        var request = new RestRequest(Method.GET);
        request.AddHeader("content-type", "application/json");
        var queryResult = client.Execute<Object>(request).Data;
        string json = JsonConvert.SerializeObject(queryResult);
        System.IO.File.WriteAllText(@"C:\...\path.json", json);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-02
          • 1970-01-01
          • 2022-06-28
          • 1970-01-01
          相关资源
          最近更新 更多