使用RestSharp获取JSON响应

时间:2014-04-15 14:34:54

标签: c# json rest restsharp

我是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结果。

感谢您的帮助!

4 个答案:

答案 0 :(得分:12)

尝试:

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);

答案 1 :(得分:4)

尝试如下:

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);

答案 2 :(得分:1)

这已经过时了,但我也只是在努力解决这个问题。这是我找到的最简单的方法。

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);
}

答案 3 :(得分:0)

如果要将结果保存到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);