Próbuję użyć RestSharp do korzystania z usługi sieci Web. Jak dotąd wszystko poszło bardzo dobrze (wiwaty dla Johna Sheehana i wszystkich współpracowników!), Ale napotkałem problem. Powiedzmy, że chcę wstawić XML do treści mojego RestRequest w jego już zserializowanej formie (tj. Jako ciąg). Czy jest na to łatwy sposób? Wygląda na to, że funkcja .AddBody () przeprowadza serializację za kulisami, więc mój ciąg jest zamieniany na <String />
.
Każda pomoc jest mile widziana!
EDYCJA: zażądano próbki mojego obecnego kodu. Zobacz poniżej -
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;
}
Odpowiedzi:
Oto jak dodać zwykły ciąg XML do treści żądania:
req.AddParameter("text/xml", body, ParameterType.RequestBody)
;źródło
req.AddParameter("application/json", body, ParameterType.RequestBody);
Dzięki Jeanowi Hominalowi za wskazówkę tutajAby dodać do odpowiedzi @ dmitreyga i zgodnie z komentarzem @ jrahhali do jego odpowiedzi, w aktualnej wersji, w momencie opublikowania
v105.2.3
, składnia jest następująca:źródło