Прием POST-запроса, закодированного с помощью C #, в ASP.NET - PullRequest
1 голос
/ 18 января 2012

Я работаю с третьей стороной, которая хочет отправлять информацию через почтовые запросы в кодировке URL, и я не могу понять, как принимать данные при отправке запроса.

Вот что говорит их журнал сервера после отправки запроса (с некоторыми изменениями, сделанными для получения моего адреса и информации, которую они отправляли):

[13-01-12 14:52:55][DEBUG]: >> "POST /mypostpage.aspx HTTP/1.1[\r][\n]"
[13-01-12 14:52:55][DEBUG]: >> "User-Agent: Jakarta Commons-HttpClient/3.0.1[\r][\n]"
[13-01-12 14:52:55][DEBUG]: >> "Host: mydomain.com[\r][\n]"
[13-01-12 14:52:55][DEBUG]: >> "Content-Length: 1034[\r][\n]"
[13-01-12 14:52:55][DEBUG]: >> "Content-Type: application/x-www-form-urlencoded[\r]   [\n]"
[13-01-12 14:52:55][DEBUG]: >> "[\r][\n]"
[13-01-12 14:52:55][DEBUG]: >>     "Variable1=variable1value&variable2=variable2value&variable3=variable3value"
[13-01-12 14:53:02][DEBUG]: << "HTTP/1.1 200 OK[\r][\n]"

Чтобы получить данные, которые они отправляют, я пытался использовать Request.QueryString. Таким образом, чтобы получить значение для переменной один, я мог бы написать что-то вроде:

variable1 = Request.QueryString ["variable1"];

Я уверен, что мне не хватает чего-то явно очевидного, но я не смог найти ответ, почему это не сработало. Когда я тестирую его самостоятельно, он работает нормально, но когда они отправляют запросы, он вообще не работает, запрос поступает так, как будто в нем ничего нет.

Ответы [ 2 ]

4 голосов
/ 18 января 2012

Request.QueryString извлекает переменные строки запроса из URI запроса, которые обычно кодируются с использованием схемы application / x-www-form-urlencoded.Параметры строки запроса не будут получать информацию POST.

В то время как тип содержимого данных POSTed выше использует ту же схему, что и переменные строки запроса, для доступа к ним необходимо использовать variable1 = Request.Form["variable1"]; или, альтернативно, variable1 = Request.Params["variable1"];, который содержит совокупную коллекцию значений POST, параметров строки запроса, файлов cookie и серверных переменных.

Для справки: Request.Params или Request.Form

POST и GET-запросы концептуально различаются, хотя POST-запрос с переменными application / x-www-form-urlencoded идентичен по формату GET-запросу с параметрами строки запроса, отформатированными по той же схеме;следовательно, разделение методов доступа внутри класса HttpRequest .

EDIT:

Свойства HttpRequest.Form и HttpRequest.Params возвращают NameValueCollection ,который связывает строковые значения с ключом на основе строки, таким образом, все значения будут строками.

0 голосов
/ 18 января 2012
string variable1 = Request.Form["variable1"];

Тип контента, который они используют, является одним из двух форматов, которые HTML-формы используют с method="post", более распространенным из двух, и Request.Form анализирует оба.Действительно, тип контента, вероятно, был выбран, чтобы облегчить жизнь людям в конце транзакции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...