2012-08-23 34 views
5

Tengo este código que estoy intentando convertir a RestSharp. He eliminado los bloques de uso para condensarlos para mayor claridad.¿Cómo envío una solicitud POST en 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(); 
} 

que hemos probado algo a la orden de:

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

Me parece que no puede enviar una solicitud utilizando RestSharp, ¿cuál es el formato adecuado para enviar una solicitud POST en application/x-form-urlencoded?

+0

qué error estás viendo? – Luxspes

+0

El servidor de Java (que no tengo control) que consume la solicitud me está dando una excepción de puntero nulo para la segunda solicitud. Básicamente desde su perspectiva, la solicitud es de alguna manera diferente. Supongo que la única manera real de depurar esto es ver la primera solicitud en wireshark y luego intentar que la versión de RestSharp se comporte de la misma manera. Esperaba algo de información rápida de lo contrario ... –

+0

Si comparte el mensaje de excepción de puntero nulo con stacktrace, es posible que le ofrezca algún consejo – Luxspes

Respuesta

5

Resulta que los parámetros ya estaban serializados en la cadena de datos. Mientras que necesitaba agregarlos a la solicitud de RestSharp manualmente.

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

donde los datos es una estructura par clave/valor

Cuestiones relacionadas