Веб API от значения тела является нулевым?

1

Я проверил похожие вопросы на это здесь:

web-api POST body object всегда null

Это точно не соответствует тому, что происходит в моем сценарии. Я делаю запрос к моему api со следующим типом содержимого заголовка запроса:

Key Value
Content-Type    application/x-www-form-urlencoded

Мое тело запроса - это ответ, который я получаю от другого сервиса, который я не могу изменить

Response=SomeLongStringOfBAse64EncodedData

Мой метод Api Post, который я вижу, попадает, устанавливая точку останова на нем:

public HttpResponseMessage Authenticate([FromBody]string Response) 

Однако строка Response всегда получает нулевое значение, хотя я вижу это в теле запроса, которое я не могу понять.

  • 0
    Как вы звоните Authenticate ?
  • 0
    страница загружается на мой сайт - на ней есть скрытая форма с действием POST. Действие над ним - мой URL-адрес Authenticate, и форма также содержит строку Response Base 64. Я думаю, что запрос выполняется нормально, когда я достигаю точки останова - просто не могу понять, почему тело запроса не привязывается к моему параметру
Показать ещё 1 комментарий
Теги:
asp.net-web-api
asp.net-web-api2

1 ответ

0
Лучший ответ

Для метода действия, подобного этому

public HttpResponseMessage Authenticate([FromBody]string Response),

вам нужно иметь тело запроса, как это, для привязки к работе.

=SomeLongStringOfBAse64EncodedData

Если вы хотите связать Response=SomeLongStringOfBAse64EncodedData, вам нужно будет изменить способ действия, подобный этому.

public HttpResponseMessage Authenticate(SomeClass response)

и добавьте класс

public class SomeClass
{
    public string Response { get; set; }
}
  • 0
    FromBody может быть хитрым, несколько проблем, которые я обнаружил в iOS, если вы используете RestKit - мне пришлось опубликовать его как json с единственным свойством, являющимся пустыми кавычками. '' = 'Значение'. В Android, если вы используете Retrofit - тогда, пока вы публикуете его с @Body, webapi будет его забирать.
  • 0
    Вам не нужно ставить перед ним префикс «=», если вы используете JSON.stringify (item);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню