2012-08-23 6 views
5

Ich habe diesen Code, den ich in RestSharp konvertieren möchte. Ich habe die verwendeten Blöcke entfernt, um sie für Klarheit zu verdichten.Wie sende ich eine POST-Anfrage in RestSharp?

using System.IO; 
using System.Net; 
using RestSharp; 

string GetResponse(string url,string data) 
{ 
    var request = (HttpWebRequest)WebRequest.Create(url); 
    request.Method = "POST"; 
    request.ContentType = "application/x-www-form-urlencoded"; 
    var bytes = Encoding.UTF8.GetBytes(data); 
    request.ContentLength = bytes.Length; 
    request.GetRequestStream().Write(bytes, 0, bytes.Length); 
    var response = (HttpWebResponse)request.GetResponse(); 
    var stream = response.GetResponseStream(); 
    if (stream == null) return string.Empty; 
    var reader = new StreamReader(stream); 
    return reader.ReadToEnd(); 
} 

ich versuchte, etwas zu der Reihenfolge:

string GetResponse(string url, string data) 
{ 
    var client = new RestClient(url); 
    var request = new RestRequest("", RestSharp.Method.POST); 
    request.AddParameter("application/x-www-form-urlencoded", data); 
    var response = client.Execute(request); 
    return response.Content; 
} 

ich nicht eine Anfrage an POST RestSharp scheinen kann, was das richtige Format ist eine POST-Anforderung in application/x-form-urlencoded zu schicken?

+0

welchen Fehler Sie sehen werden? – Luxspes

+0

Der Java-Server (auf den ich keine Kontrolle habe), der die Anfrage in Anspruch nimmt, gibt mir eine Nullzeiger-Ausnahme für die zweite Anfrage. Aus seiner Perspektive ist die Anfrage irgendwie anders. Ich schätze, der einzige wirkliche Weg, dies zu debuggen, besteht darin, sich die erste Anfrage in wireshark anzuschauen und dann zu versuchen, dass die RestSharp-Version sich genauso verhält. Ich hoffe auf einen schnellen Einblick, ansonsten ... –

+0

Wenn Sie die Nullzeiger-Ausnahmebedingungsnachricht mit dem Stacktrace teilen, könnte es möglich sein, Ihnen einen Rat zu geben – Luxspes

Antwort

5

So stellt sich heraus, dass die Parameter bereits alle in der Datenfolge serialisiert wurden. Hingegen musste ich sie manuell zur RestSharp-Anfrage hinzufügen.

foreach (var pair in data) 
{ 
    request.AddParameter(pair.Key, pair.Value); 
} 

wo Daten ist ein Schlüssel/Wert-Paar struct

Verwandte Themen