Подтвердить что ты не робот

Как добавить текст для запроса тела в RestSharp

Я пытаюсь использовать 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;
}
4b9b3361

Ответ 1

Вот как добавить строку простого XML в тело запроса:

req.AddParameter("text/xml", body, ParameterType.RequestBody);

Ответ 2

Чтобы добавить в @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
});