2017-11-25 1 views
1

Hey all das ist das erste Mal, dass ich versuche RESTsharp. Ich versuche, eine GET Anruf zu erstellen, die wie folgt aussieht:RESTsharp bekommen Befehl mit &

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

ich folgendes mit Blick auf einige Online-Beispiele versucht haben:

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; 

Wenn ich auf dem ein Ende setzen queryResult es sagt nur NULL.

quotesAPI sieht wie folgt aus:

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

Wie muss ich den Anruf, um zu formatieren, um es, wie es sein sollte, zu arbeiten?

Update 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

Erstellen Sie eine Anforderung wie folgt: 'new RestRequest (" api ", Method.GET);', keine Notwendigkeit, dort '{0} & {1}' zu übergeben. – Evk

+0

@Evk sieht aus wie das kommt auch zurück ** NULL ** – StealthRT

Antwort

2

Erstens gibt es keine Notwendigkeit, Rest-Client wie diese zu erstellen:

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

in Abfrage Dies führt zu http://labs.bible.org/api/?{0}&{1}&passage=random&type=json. In diesem speziellen Fall könnte es immer noch "funktionieren", aber im Allgemeinen sollten Sie dies natürlich vermeiden. Stattdessen erstellen Sie es wie folgt:

Für GET-Methoden werden Parameter, die Sie dann erstellen, an Abfragezeichenfolge für Sie angefügt.

Ein weiteres Problem ist hier ungewöhnlicher Inhaltstyp der Antwort. Antwort für Ihre Abfrage hat Inhaltstyp application/x-javascript. RestSharp hat keine Ahnung, was mit solchen Inhaltstyp zu tun, so sollten Sie es sagen:

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

Hier sagen Sie, dass es Antwort mit solchen Inhaltstyp als json deserialisieren sollte. Danach sollten Sie das erwartete Ergebnis erhalten.

+0

ich bekomme Daten zurück, aber es geht nirgends - wie in den Werten, die ich suche nicht da sind. – StealthRT

+0

Siehe meine aktualisierte OP. – StealthRT

+0

@StealthRT nicht sicher, was du meinst, ich habe diesen Code getestet und es gibt Werte gut. Obwohl nicht sicher, was ist "Liste ", weil Ihr Klassenname ist "qAPI" in Frage. Ich testete mit 'List ' und es gibt Liste mit 1 Element, mit Buchname "2 Samuel" und so weiter. – Evk