2017-11-25 145 views
1

嘿,這一切都是我第一次嘗試RESTsharp。我想創建一個GET調用看起來像這樣:RESTsharp獲取命令&

http://labs.bible.org/api/?passage=random&type=json 

我試着看一些網上的例子如下:

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; 

當我把止損上queryResult它只是說NULL。

quotesAPI看起來是這樣的:

public class qAPI 
{ 
    public string bookname { get; set; } 
    public string chapter { get; set; } 
    public string verse { get; set; } 
    public string text { get; set; } 
} 

那麼,如何做,我需要格式,以便爲它工作,因爲它應該是通話?

更新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; 
+0

創建這樣的請求:'new RestRequest(「api」,Method.GET);',不需要在那裏傳遞任何'{0}&{1}'。 – Evk

+0

@Evk看起來像這樣也回來** NULL ** – StealthRT

回答

2

首先,有沒有必要創建REST客戶端這樣的:

new RestRequest("api/?{0}&{1}", Method.GET); 

這將導致查詢http://labs.bible.org/api/?{0}&{1}&passage=random&type=json。在這個特定情況下,它可能仍然「有效」,但總的來說,你當然應該避免這種情況。相反,如下創建它:

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。之後,你應該收到預期的結果。

+0

我得到的數據回來,但它不會去任何地方 - 因爲我在找的價值不存在。 – StealthRT

+0

查看我更新的OP。 – StealthRT

+0

@StealthRT不確定你的意思,我測試了這段代碼,它返回的值很好。雖然不知道'List '是什麼,因爲你的類名是'qAPI'。我用'List '進行了測試,它返回帶有1個項目的列表,其中書名爲「2 Samuel」等等。 – Evk