2014-01-24 1 views
4

У меня возникли проблемы с использованием метода POST и JSON-Patch (см. RFC: http://tools.ietf.org/html/rfc6902) в RestClient RestSharp. AddBody() содержит примерно следующее:Поддерживается ли json-patch в restclient?

request.AddBody(new { op = "add", path = "/Resident", value = "32432" }); 

Это ошибки. Я не знаю, как пройти json-patch операций в теле. Я пробовал все, что мог. Есть ли решение этой проблемы?

+0

Вы пробовали использовать параметры вместо AddBody? – Prix

+0

Кажется, я преодолел эту проблему, но вопрос все еще верен, потому что теперь мое описание ошибки изменилось. Описание ошибки выглядит следующим образом: {"type": "error", "status": 415, "code": "unsupported_media_type", "help_url": "http: \/\/\/# errors", "message" : «Content-Type должен быть приложением \/json-patch + json», «request_id»: «1953d8ac6»} Я получаю ошибку unsupported_media_type, и ошибка возникает в методе restclient.execute(). Есть ли способ решить эту проблему? – user3231144

+0

Prix, Да, я пробовал параметры, и это не сработало, но в любом случае я могу передать операции в теле, но проблема связана с json-patch. Кажется, метод execute() не поддерживает ответ json-patch. Есть идеи? – user3231144

ответ

1

Это работает для меня:

var request = new RestRequest(myEndpoint, Method.PATCH); 
request.AddHeader("Content-Type", "application/json-patch+json"); 
request.RequestFormat = DataFormat.Json; 
request.AddBody(
    new 
    { 
     op = "add", 
     path = "/Resident", 
     value = "32432" 
}); 

request.Parameters.FirstOrDefault(p => p.Type == ParameterType.RequestBody).Name = "application/json-patch+json"; 

var response = restClient.Execute(request); 
1

Это улучшенная версия ответа Скотта. Я не хотел запрашивая параметры и RestSharp дает возможность установить имя непосредственно AddParameter

var request = new RestRequest(myEndpoint, Method.PATCH); 
request.AddHeader("Content-Type", "application/json-patch+json"); 
request.RequestFormat = DataFormat.Json; 
var body = new 
{ 
    op = "add", 
    path = "/Resident", 
    value = "32432" 
} 
request.AddParameter("application/json-patch+json", body, ParameterType.RequestBody); 

var response = restClient.Execute(request); 
Смежные вопросы