Unterschied zwischen den RestSharp-Methoden AddParameter und AddQueryParameter mit HttpGET

9

Ich verwende RestSharp, um eine externe API aufzurufen.

Das funktioniert:

%Vor%

Das tut nicht:

%Vor%

Ergebnis:

  

System.Exception: API-Aufruf MyWebAPIMethod GET: Fehler beim Statuscode   0 - Verbindung zum Remote-Server konnte nicht hergestellt werden

Was ist der Unterschied zwischen AddParameter und AddQueryParameter ? Laut Dokumentation sollen sie bei Verwendung von HttpGET gleich funktionieren? Laut Fiddler scheinen sie dieselbe URL zu generieren.

    
Nicholas 18.09.2015, 02:54
quelle

2 Antworten

10

Um Ihre Frage zu beantworten

AddQueryParameter fügt einen Parameter in der Abfragezeichenfolge als ParameterType.QueryString hinzu, während AddParameter(string, object) den Parameter als ParameterType.GetOrPost

hinzufügt

Weitere Einzelheiten zu jedem Parametertyp finden Sie unter:

GetOrPost : Ссылка

QueryString : Ссылка

Um Ihr Problem zu lösen

Es scheint, dass es nichts mit dem Typ des Parameters zu tun hat, da die ausgelöste Ausnahme darauf hindeutet, dass Sie nicht einmal eine Verbindung zum entfernten Server herstellen.

Stellen Sie sicher, dass Sie in beiden Fällen das gleiche apiUrl / myUrl übergeben.

    
Fabio Salvalai 18.09.2015, 08:46
quelle
0

Um das OP und alle anderen zu beantworten, die Probleme mit dem Konzept haben könnten. Es dauerte eine Weile, bis ich zu dem Konzept kam. Sie müssen wahrscheinlich den REST-Standard visualisieren, wie eine GET-Anforderungsnachricht in einer URL gegen den Aufbau einer POST-Anforderungsnachricht erstellt wird.

Sie werden feststellen, dass für GET die Parameter dem URL-Header angehängt sind während für den POST der / die Parameter im Nachrichtentext platziert werden. Die Methode AddQueryParameter () von RestSharp fügt nur die Parameter (Query) in den Header der Nachricht ein, während AddParameter () nur die Parameter zum Mesaskörper hinzufügt. Wie unten gezeigt, hat das GET einen Abfrageparameter mit einem Wert von "Flavors". Für den POST befinden sich die Parameter contact_name und company_name im unteren Teil des Nachrichtentexts.

ZB:

GET Nachrichtenformat:

GET Ссылка HTTP / 1.1 Gastgeber: www.consumerdiarydemo.cbrnetwork.test.au Verbindung: Keep-Alive Akzeptieren: Anwendung / JSON Benutzer-Agent: Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, wie Gecko) Chrome / 58.0.3029.110 Safari / 537.36 Referer: Ссылка Accept-Encoding: gzip, deflate, sdch Accept-Language: de-DE, de-DE; q = 0.8, de; q = 0.6

POST-Nachrichtenformat:

POST Ссылка HTTP / 1.1 Akzeptieren: application / json, text / javascript, / ; q = 0,01 X-Requested-With: XMLHttpRequest Inhaltstyp: application / x-www-form-urlencoded; charset = UTF-8

{"Kontaktname": "Wert_Daten1", "Firmenname": "Wert_Daten2"}

    
SmoothyBoothy 19.05.2017 07:48
quelle