C# 使用&;获取命令;

C# 使用&;获取命令;,c#,rest,api,restsharp,C#,Rest,Api,Restsharp,嘿,这是我第一次尝试RESTsharp。我正在尝试创建一个GET调用,如下所示: http://labs.bible.org/api/?passage=random&type=json public class qAPI { public string bookname { get; set; } public string chapter { get; set; } public string verse { get; set; } public string

嘿,这是我第一次尝试RESTsharp。我正在尝试创建一个GET调用,如下所示:

http://labs.bible.org/api/?passage=random&type=json
public class qAPI
{
   public string bookname { get; set; }
   public string chapter { get; set; }
   public string verse { get; set; }
   public string text { get; set; }
}
new RestRequest("api/?{0}&{1}", Method.GET);
new RestRequest("api", Method.GET);
我通过查看一些在线示例尝试了以下方法:

var client = new RestClient("http://labs.bible.org/");
var request = new RestRequest("api/?{0}&{1}", Method.GET);

request.AddParameter("passage", "random");
request.AddParameter("type", "json");

var queryResult = client.Execute<List<quotesAPI>>(request).Data;
那么,我需要如何设置调用的格式才能使其正常工作呢

更新1

 var client = new RestClient("http://labs.bible.org/");
 var request = new RestRequest("api", Method.GET);

 request.AddParameter("passage", "random");
 request.AddParameter("type", "json");
 client.AddHandler("application/x-javascript", new RestSharp.Deserializers.JsonDeserializer());

 var queryResult = client.Execute<List<quotesAPI>>(request).Data;
var client=new RestClient(“http://labs.bible.org/");
var请求=新的重新请求(“api”,Method.GET);
请求。添加参数(“通过”、“随机”);
AddParameter(“type”,“json”);
AddHandler(“application/x-javascript”,新的RestSharp.Deserializers.jsondeselizer());
var queryResult=client.Execute(request.Data);

首先,不需要像这样创建rest客户端:

http://labs.bible.org/api/?passage=random&type=json
public class qAPI
{
   public string bookname { get; set; }
   public string chapter { get; set; }
   public string verse { get; set; }
   public string text { get; set; }
}
new RestRequest("api/?{0}&{1}", Method.GET);
new RestRequest("api", Method.GET);
这将导致查询到
http://labs.bible.org/api/?{0}&{1}&passage=random&type=json
。在这种特殊情况下,它可能仍然“有效”,但一般来说,您当然应该避免这种情况。相反,请按如下方式创建:

http://labs.bible.org/api/?passage=random&type=json
public class qAPI
{
   public string bookname { get; set; }
   public string chapter { get; set; }
   public string verse { get; set; }
   public string text { get; set; }
}
new RestRequest("api/?{0}&{1}", Method.GET);
new RestRequest("api", Method.GET);
对于GET方法,随后创建的参数将附加到查询字符串中

这里的另一个问题是不寻常的内容类型响应。查询响应的内容类型为
application/x-javascript
。RestSharp不知道如何处理此类内容类型,因此您应该告诉它:

var client = new RestClient("http://labs.bible.org/");
client.AddHandler("application/x-javascript", new RestSharp.Deserializers.JsonDeserializer());

这里您说它应该使用json这样的内容类型来反序列化响应。之后,您应该会收到预期的结果。

创建如下请求:
newrestrequest(“api”,Method.GET),无需在那里传递任何
{0}&{1}
。@Evk看起来也会返回null我会返回数据,但它不会返回任何地方-因为我要查找的值不在那里。@StealthRT不确定您的意思,我测试了这段代码,它返回的值很好。虽然不确定什么是
List
,因为您的类名是
qAPI
。我使用
List
进行了测试,它返回的List中有1个条目,书名为“2 Samuel”,以此类推。这就是问题所在。没有。qAPI。现在我看到的数据和你一样。谢谢Evk!