2017-11-25 7 views
1

これは初めての試みです。RESTシャープです。私はこのようになりますGETコールを作成しようとしています:RESTシャープgetコマンドに&

私はいくつかのオンライン例を見ると、次の試してみた
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; } 
} 

それでは、どのように私はそれが動作するためにコールをフォーマットする必要がありますか?

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

これはhttp://labs.bible.org/api/?{0}&{1}&passage=random&type=jsonにクエリーになります:

更新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

まず、次のように残りのクライアントを作成する必要はありません。この特定のケースでは、それはまだ "働く"かもしれませんが、一般的にはもちろんこれを避けるべきです。代わりに、このようにそれを作成します:GETメソッドの

new RestRequest("api", Method.GET); 

、あなたがして作成パラメータは、あなたのためのクエリ文字列に追加されます。

ここでのもう1つの問題は、応答の珍しいコンテンツタイプです。クエリの応答にコンテンツタイプが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 'でテストし、booknameが "2 Samuel"のような1つの項目を持つリストを返します。 – Evk