#.net #http #httpwebrequest
#.net #http #httpwebrequest
Вопрос:
РЕДАКТИРОВАТЬ: я использовал скопированный код из другого проекта, который был чрезмерно сложным… К счастью, выходные не за горами.
***********************************************
В настоящее время я создаю внешний API шлюза SMS для внутреннего использования — внешний API требует, чтобы сообщение нескольким получателям использовало следующий синтаксис:
http://(smsgateway)/?username=fooamp;pass=baramp;from=myNameamp;recipient[]=4512345678amp;recipient[]=4587654321amp;…
Это отлично работает для запросов GET, но я бы предпочел отправлять сообщения на шлюз, чтобы избежать проблем с генерируемыми очень большими URL. хотя HTTP 1.1 явно не запрещает клиентам отправлять запросы с очень длинными URL-адресами на сервер.
Проблема здесь в том, что мне не разрешено использовать имя параметра формы, содержащее скобки, если я использую HttpWebRequest в .NET 4. Я получаю следующую ошибку: ‘Указанное значение содержит недопустимые символы заголовка HTTP’
Мой вопрос: я не смог найти ничего в спецификации HTTP 1.1 относительно недопустимых символов в именах параметров формы, так почему мне не разрешено использовать имя параметра формы с именем ‘recipients []’?
Ответ №1:
Как вы отправляете POST-запрос? HTTP не заботится о POST «параметрах формы», потому что они отправляются в теле запроса (с соответствующей кодировкой содержимого).
Комментарии:
1. Ошибка возникает при добавлении в коллекцию форм: WebRequest. Headers.Add(«получатели[]», «некоторое значение»);
2. Запросы POST работают не так — параметры формы не отправляются в заголовках запроса. Они отправляются в теле запроса.
3. Вот что обнаружил быстрый поиск в Google, обратите внимание, как отправляются postData: netomatix.com/httppostdata.aspx
4. Я использовал код из другого проекта, но после небольшого реинжиниринга, вдохновленного вашим примером, все работает как по маслу. Хороший вопрос — спасибо