2012-08-23 13 views
5

Mam ten kod, który próbuję przekonwertować na RestSharp. Usunąłem bloki używane do skondensowania dla jasności.Jak wysłać żądanie POST w 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(); 
} 

Próbowałem coś do porządku:

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; 
} 

ja nie potrafię odpowiedzieć na wniosek korzystając RestSharp, jaki jest odpowiedni format, aby wysłać żądanie POST w application/x-form-urlencoded?

+0

błąd co widzisz? – Luxspes

+0

Serwer Java (nad którym nie mam kontroli) zużywający żądanie podaje mi wyjątek wskaźnika pustego dla drugiego żądania. Zasadniczo z jego punktu widzenia prośba jest nieco inna. Domyślam się, że jedynym sposobem na debugowanie jest obejrzenie pierwszej prośby w wireshark, a następnie spróbuj, aby wersja RestSharp zachowała się w ten sam sposób. Miał nadzieję na szybki wgląd w inny sposób ... –

+0

Jeśli udostępnisz komunikat wyjątku wskaźnika pustego ze stosu, może być możliwe udzielenie porady – Luxspes

Odpowiedz

5

Okazuje się, że parametry zostały już serializowane w ciągu danych. Podczas gdy musiałem ręcznie dodać je do żądania RestSharp.

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

gdzie dane jest klucz/wartość pary struct