2017-06-12 4 views
0

encodieren Ich muss einen der Parameter an HttpRequest übergeben (POST).Wie nicht RestSharp Parameter

Können sagen wir ‚someParam‘ Parameter haben und wir brauchen ‚einige + Wert‘ Wert zu übergeben.

Bei Verwendung von request.AddParameter ("someParam", "einige + Wert"); - Wert wird automatisch in 'einige% 2Bvalue' konvertiert und in der Anfrage sieht es so aus 'someparam = einige% 2Bvalue'. Aber die Anwendung versteht nur +.

Gibt es eine Möglichkeit, Parameter zur Anfrage hinzuzufügen, aber nicht zu kodieren ???

Antwort

0

Auf der Serverseite sollte 'some% 2Bvalue' zu "some + value" dekodiert werden. Wenn dies nicht der Fall, denn Sie bessere Lösung ist, zu trennen Werte:

request.AddParameter("someParam", "some"); 
request.AddParameter("someParamValue", "value"); 

Und auf Server-Seite nur Parameter analysieren zu some+value wie man wollte.

Eine andere Problemumgehung wäre, Zeichenfolge "% 2" durch "+" zu ersetzen. Aber es ist immer noch besser, die Werte zu trennen.

Mögliche Abhilfe für GET:

string resource = "something"; 
    var client = new RestClient(baseurl+ resource +"?"+"someParam"+"="+"some+value"); 
    var request = new RestRequest(resource, method); 
    IRestResponse<T> response = client.Execute<T>(request); 
    return response.Data; 

So müssen Sie url selbst zusammenstellen und es ganze bieten zu beantragen.

+0

Vielen Dank für die Antwort. Aber das Problem ist, dass ich die API auf dem Server nicht ändern kann, da sie nicht mir gehört. Auch Server ersetzt "+" durch Leerzeichen. Praktischeres Beispiel, wenn ich dem Parameter 'companyName' den Wert 'Big Star' hinzufügen muss, aber wenn ich den Wert 'Big Star' oder 'Big% 20Star' oder 'Big% 2BStar' übergebe, gibt der Server den Fehler aus can pass ist 'Big + Star': request.AddParameter ("companyName", "Big + Star"); funktioniert nicht, da es automatisch '+' codiert –

+0

Also die Hauptabsicht, die ich '+' in nicht codierter Weise senden muss (sieht aus wie RestSharp, das spezielles Symbol erzwingt, um sie zu codieren und es gibt keine solche Markierung, um es nicht zu bemerken) codiert) –

+0

Sie sollten den Besitzer kontaktieren. Weil die Verschlüsselung Teil des http-Protokolls ist. Node.js dekodiert es zum Beispiel für mich und ASP.NET. Für mich scheint es also eine schlechte Serverimplementierung zu sein. –