2017-11-02 3 views
0

Ich habe ein Problem mit der Anfrage mit Parametern zu senden. Ich habe Beispiel für die Anforderung in PHP zu senden, aber ich kann nicht herausfinden, wie sollte es wie in RestSharp aussehen:RestSharp - GET Anfrage mit Parametern

enter image description here

Wie Sie sehen können, in dem Beispiel Parameter werden zu privaten Schlüsseln (was ich auch getan habe) und dann gibt es auch dieses CURLOPT_POSTFIELDS, wo auch Params hinzugefügt werden. Ich habe versucht, es durch AddParameter, AddBody, AddJsonBody und nichts funktioniert. Wenn ich Parameter mit einem privaten Schlüssel verkettet habe, ist die Antwort immer leer. Wenn ich sie entferne, erhalte ich die Antwort, aber meine Parameter werden ignoriert.

 string data = "{\"Paging\":{\"per_page\":\"" + 10 + "\"}}"; 

     RestClient client = new RestClient("api"); 

     string header = "WMS " + publicKey + ":" + GetMd5Hash(privateKey + data); 

     IRestRequest request = new RestRequest("products", Method.GET); 
     request.AddHeader("Content-Type", "application/json; charset=utf-8"); 
     request.AddHeader("Authorization", header); 
     request.AddHeader("Content-Length", data.Length.ToString()); 

     //request.RequestFormat = RestSharp.DataFormat.Json; 
     request.AddParameter("Paging", new { per_page = 10 }); 

     IRestResponse response = client.Execute(request); 

     Encoding encoding = Encoding.GetEncoding("utf-8"); 
     var result = encoding.GetString(response.RawBytes); 

konnte ich die PHP-Anfrage mit Fiedler und roh Anfrage so aussah verfolgen:

 
GET api HTTP/1.1 
Host: api 
Pragma: no-cache 
Accept: */* 
Authorization: WMS md5 
Content-type: application/json 
Content-Length: 27 

{"Paging":{"per_page":"8"}} 

Und Mine sieht so aus:

 
GET api HTTP/1.1 
Authorization: WMS md5 
Content-Type: application/json 
Accept: */* 
User-Agent: RestSharp/105.2.3.0 
Host: api 
Accept-Encoding: gzip, deflate 
Connection: Keep-Alive 

Der Parameter wird nicht angezeigt darin, weiß nicht warum. Ich habe jeden Parametertyp ausprobiert. Abgesehen davon ist auch meine Kopfzeile "Content-Length" nicht sichtbar.

+1

Verwenden Sie [Fiddler] (https://www.telerik.com/fiddler), um die echte Anfrage von php senden zu protokollieren. –

+0

Fiddler registriert diese Anfrage nicht:/ – Dess

+0

Ich habe es geschafft, es zu verfolgen, also habe ich meine Frage aktualisiert – Dess

Antwort

0

Parameter auf eine GET-Anfrage Hinzufügen, getan wird nur mit:

request.AddParameter("name", "value"); 

Ich glaube, Sie andere Probleme in Ihrem Code haben, wahrscheinlich json-Format mischen, aber da wir nicht über die Details von Ihnen tatsächlichen API die du konsumierst können wir damit beraten.

Möglicherweise könnten Sie das Beispiel vereinfachen, testen und dann weitere Konfigurationsdateien hinzufügen, da die API Fehler anzeigt. Überprüfen Sie das grundlegende Beispiel hier: https://github.com/restsharp/RestSharp

+0

Das war das erste, was ich ausprobiert habe und es hat nicht funktioniert – Dess

Verwandte Themen