Estoy intentando usar RestSharp para consumir un servicio web. Hasta ahora todo ha ido muy bien (¡salud a John Sheehan y a todos los colaboradores!) Pero me he encontrado con un problema. Digamos que quiero insertar XML en el cuerpo de mi RestRequest en su forma ya serializada (es decir, como una cadena). ¿Hay una forma fácil de hacer esto? Parece que la función .AddBody () realiza la serialización detrás de escena, por lo que mi cadena se está convirtiendo en <String />
.
¡Cualquier ayuda es muy apreciada!
EDITAR: Se solicitó una muestra de mi código actual. Vea abajo --
private T ExecuteRequest<T>(string resource,
RestSharp.Method httpMethod,
IEnumerable<Parameter> parameters = null,
string body = null) where T : new()
{
RestClient client = new RestClient(this.BaseURL);
RestRequest req = new RestRequest(resource, httpMethod);
// Add all parameters (and body, if applicable) to the request
req.AddParameter("api_key", this.APIKey);
if (parameters != null)
{
foreach (Parameter p in parameters) req.AddParameter(p);
}
if (!string.IsNullOrEmpty(body)) req.AddBody(body); // <-- ISSUE HERE
RestResponse<T> resp = client.Execute<T>(req);
return resp.Data;
}
Respuestas:
A continuación, se explica cómo agregar una cadena xml simple al cuerpo de la solicitud:
req.AddParameter("text/xml", body, ParameterType.RequestBody)
;fuente
req.AddParameter("application/json", body, ParameterType.RequestBody);
Gracias a Jean Hominal por el consejo aquíPara agregar a la respuesta de @ dmitreyg y según el comentario de @ jrahhali a su respuesta, en la versión actual, a partir del momento en que se publicó
v105.2.3
, la sintaxis es la siguiente:fuente