2016-12-20 6 views
0

Ich habe auf einen Remote-Web-Service zwei Parameter senden: Firmano und irsaliyeData. firmaNo ist numerisch und irsaliyeData ist ein json objekt. Ich habe es schon mit Postman versucht und es hat ohne Probleme funktioniert. Aber ich muss es mit einer C# Desktop-Anwendung für meine Firma tun.Postman restsharp Code-Snippet funktioniert nicht in winforms C#

Ich eingegeben Parameter manuell und senden sie an Web-Service mit Postman, Server zurückgegeben mit einem gültigen Wert. Postman erzeugte die Codes (C# -RestSharp) unter:

var client = new RestClient("https://remoteserver.com/webservice"); 
var request = new RestRequest(Method.POST); 

request.AddHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW"); 
request.AddParameter("multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"firmaNo\"\r\n\r\n2000007\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"irsaliyeData\"\r\n\r\n{ \"rampaNoktasi\": 21, \"dosyaTarihi\": \"16.12.2016 17:37\" }\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--", ParameterType.RequestBody); 

IRestResponse response = client.Execute(request); 

Aber wenn ich meine C# Kopieren und Einfügen Schaltfläche Click-Ereignishandler der winform Anwendung diesen Code auf dem Server immer wieder Time Out Fehler.

var client = new RestClient("https://remoteserver.com/webservice"); 
var request = new RestRequest(Method.POST); 

request.AddHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW"); 
request.AddParameter("multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"firmaNo\"\r\n\r\n2000007\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"irsaliyeData\"\r\n\r\n" + jsonstring + "\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--", ParameterType.RequestBody); 

IRestResponse response = client.Execute(request); 
lbl_result.Text = response.Content + response.ErrorMessage; 

Muss ich der aktuellen cs-Datei oder app.config-Datei Code hinzufügen. Ich stecke an diesem Punkt fest.

Vielen Dank im Voraus.

+0

Dies kann oder kann Ihnen nicht helfen, aber wenn ich mit einem ähnlichen Problem beschäftigt war, musste ich einen Zeichensatz zum "Content-Type" hinzufügen, damit der Server den Austausch erkennt, "ContentType", "application/json ; odata = verbose; charset = utf-8 "' – vipersassassin

+0

@vipersassassin danke für die schnelle Antwort, ich habe versucht, den Inhaltstyp in application/json zu ändern, aber ich habe wieder eine Auszeit:/ –

+0

Nun, das einzige scheint anders zu sein ist die Grenz-ID und der J-String. Ich würde versuchen, die jsonstring auf das gleiche wie das erste Beispiel zu setzen und auch die gleiche Grenze und machen diese Arbeit. Wenn das nicht funktioniert, wenn Sie wissen, dass es nicht der Code ist, ist das Problem. Ansonsten nur ein Stück nach dem anderen ersetzen. Beginnen Sie mit dem Ändern der Grenze und dann der jsonstring auf einen anderen Wert. Dann weißt du, wo das Problem liegt. – MrApnea

Antwort

0

Ich löste mein Problem mit der WebClient-Methode anstelle von RestSharp.

Danke an alle für Hilfe.

Verwandte Themen