Ответ 1
Вот как добавить строку простого XML в тело запроса:
req.AddParameter("text/xml", body, ParameterType.RequestBody)
;
Я пытаюсь использовать RestSharp для использования веб-службы. Пока все прошло очень хорошо (приветствует Джона Шихана и всех участников!), Но я столкнулся с проблемой. Скажем, я хочу вставить XML в тело моего RestRequest в его уже сериализованной форме (т.е. В виде строки). Есть простой способ сделать это? Похоже, функция .AddBody() выполняет сериализацию позади сцен, поэтому моя строка превращается в <String />
.
Любая помощь очень ценится!
EDIT: Образец моего текущего кода был запрошен. См. Ниже -
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;
}
Вот как добавить строку простого XML в тело запроса:
req.AddParameter("text/xml", body, ParameterType.RequestBody)
;
Чтобы добавить в @dmitreyg ответ и за комментарий @jrahhali к его ответу, в текущей версии, с момента его размещения это v105.2.3
, синтаксис выглядит следующим образом:
request.Parameters.Add(new Parameter() {
ContentType = "application/json",
Name = "JSONPAYLOAD", // not required
Type = ParameterType.RequestBody,
Value = jsonBody
});
request.Parameters.Add(new Parameter() {
ContentType = "text/xml",
Name = "XMLPAYLOAD", // not required
Type = ParameterType.RequestBody,
Value = xmlBody
});