2015-07-08 2 views
0

Я использую restsharp для выполнения POST-запроса к моей конечной точке.RestSharp удаление точки из тела

Когда я добавить тело, я делаю это:

request.AddParameter("text/json", message, ParameterType.RequestBody); 

Сообщение строка выполняется следующим образом: VALUE1.VALUE2 Это действительно просто.

Но моя точка получает только VALUE1

конечной точки подписи является:

[HttpPost] 
public HttpResponseMessage DoJob([FromBody] string id) 

Вы знаете, почему? Должен ли я каким-то образом кодировать сообщение, которое я отправляю?

Выполнение этого же с почтальоном для целей тестирования Я не испытываю такого поведения.

Спасибо!

+0

Как вы получаете параметры в конечной точке? Или вы можете добавить определение конечной точки и URL-адрес? – ivamax9

+0

@Chase: Я обновил вопрос – ff8mania

ответ

0

Я решил эту проблему, проходящее тело по-другому.

Вместо:

request.AddParameter("text/json", message, ParameterType.RequestBody); 

я поставил:

request.RequestFormat = DataFormat.Json; 
request.AddBody(message); 

Теперь любой символ внутри сообщения, содержание сообщения (до тех пор, как это JSON) правильно передается в моей конечной точке

+0

Почему вы не приняли его, когда я разместил его в первый раз?) – ivamax9

+0

@Chase: потому что позже я понял, что это правильный ответ :) – ff8mania

+0

Почему вы меняете свое мнение снова, это смешно ?) Кстати, ваше текущее решение в этом сообщении не работает, потому что ваше определение API ждет параметра id, и вы его не определяли, поэтому ваш id в действии всегда имеет значение null. Но вы задали это как ответ. Вы забавный парень) – ivamax9

1

Вот мой рабочий пример для RestSharp версии 105.1.0.0:

var message = "VALUE1.VALUE2" 
var client = new RestClient("http://localhost:64648"); //replace with your domain name 
var request = new RestRequest("/Home/DoJob", Method.POST); //replace 'Home' with your controller name 
request.RequestFormat = DataFormat.Json; 
request.AddBody(new { id = message }); 
client.Execute(request); 

И моя конечная точка определения

[HttpPost] 
public HttpResponseMessage DoJob([System.Web.Http.FromBody] string id) { 
    //some code 
} 

Все работает, как ожидалось.

Кстати, если вы хотите опубликовать массив, нужно изменить только два места:

request.AddBody(new { ids = message.Split('.') }); 

и определение

[HttpPost] 
public HttpResponseMessage DoJob([System.Web.Http.FromBody] string[] ids) { 
    //some code 
} 
Смежные вопросы