Estou tentando usar RestSharp para consumir um serviço da web. Até agora tudo correu muito bem (felicidades para John Sheehan e todos os contribuidores!), Mas encontrei um obstáculo. Digamos que eu queira inserir XML no corpo do meu RestRequest em sua forma já serializada (ou seja, como uma string). Existe uma maneira fácil de fazer isso? Parece que a função .AddBody () conduz a serialização nos bastidores, então minha string está sendo transformada em <String />
.
Qualquer ajuda é muito apreciada!
EDIT: Uma amostra do meu código atual foi solicitada. Ver abaixo --
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;
}
Respostas:
Veja como adicionar uma string xml simples ao corpo da solicitação:
req.AddParameter("text/xml", body, ParameterType.RequestBody)
;fonte
req.AddParameter("application/json", body, ParameterType.RequestBody);
Obrigado a Jean Hominal pela dica aquiPara adicionar à resposta de @dmitreyg e por comentário de @jrahhali à sua resposta, na versão atual, a partir do momento em que esta é postada
v105.2.3
, a sintaxe é a seguinte:fonte