|
Сложности с Post запросом | ☑ | ||
---|---|---|---|---|
0
Vadimok
06.12.16
✎
07:31
|
Возникла необходимость загрузки актуальных кодов ТНВЭД. На сайте kgd.gov.kz есть актуальный справочник с кодами. Пишу код чтобы получить данные
HTTPСоединение = Новый HTTPСоединение("kgd.gov.kz"); HTTPЗапрос = Новый HTTPЗапрос("/tnved/otvet.php?limit=10&Code_ID=li_id_III&Level_ID=li_cl_1+li_cl_clic&FromAjax=true"); HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос); HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос); ДанныеОтвета = HTTPОтвет.ПолучитьТелоКакСтроку(); Данные приходят но всегда одни и те же, приходит первая страница т.е. огловление. а данные должны меняться исходя из этой строки limit=10&Code_ID=li_id_III&Level_ID=li_cl_1+li_cl_clic&FromAjax=true вернее Code_ID=li_id_III И Level_ID=li_cl_1+li_cl_clic но что то не так, подскажите может я делаю что то не так? |
|||
1
Повелитель
06.12.16
✎
07:35
|
(0) Актуальная тема.
Мне тоже эти коды нужны. |
|||
2
Vadimok
06.12.16
✎
09:35
|
Тема закрыта, вопрос решен привожу работоспособный код
HTTPСоединение = Новый HTTPСоединение("kgd.gov.kz"); // Получим временный файл для передачи в теле POST запроса ФайлТелаЗапроса = ПолучитьИмяВременногоФайла(); // Запишем в файл содержимое тела запроса (текст) ТекстФайл = Новый ТекстовыйДокумент; ТекстФайл.УстановитьТекст("limit=10&Code_ID=li_id_01012&Level_ID=li_cl_4+li_cl_click&FromAjax=true"); ТекстФайл.Записать(ФайлТелаЗапроса, КодировкаТекста.UTF8); // Получим размер данных для передачи в заголовок ФайлНаОтправку = Новый Файл(ФайлТелаЗапроса); РазмерФайлаНаОтправку = XMLСтрока(ФайлНаОтправку.Размер()); // Получим временный файл — тело ответа POST запроса ФайлРезультат = ПолучитьИмяВременногоФайла(); // Заголовок создадим в виде соответствия ЗаголовокЗапросаHTTP = Новый Соответствие(); // Передаем в заголовках размер и тип данных на отправку ЗаголовокЗапросаHTTP.Вставить("Content-Length", РазмерФайлаНаОтправку); ЗаголовокЗапросаHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded"); ЗаголовокЗапросаHTTP.Вставить("Host", "http://www.kgd.gov.kz"); //Host: http://www.kgd.gov.kz //Content-Length: 71 //Content-Type: application/x-www-form-urlencoded HTTPЗапрос = Новый HTTPЗапрос("/tnved/otvet.php", ЗаголовокЗапросаHTTP); HTTPЗапрос.УстановитьИмяФайлаТела(ФайлТелаЗапроса); HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос,ФайлРезультат); // Получим ответ ТекстовыйФайлОтвета = Новый ТекстовыйДокумент; ТекстовыйФайлОтвета.Прочитать(ФайлРезультат, КодировкаТекста.UTF8); СтрокаОтветаСервера = ТекстовыйФайлОтвета.ПолучитьТекст(); Сообщить(СтрокаОтветаСервера); |
|||
3
oleg_km
06.12.16
✎
10:14
|
Эти заголовки не нужны, их платформа сама сделает:
ЗаголовокЗапросаHTTP.Вставить("Content-Length", РазмерФайлаНаОтправку); ЗаголовокЗапросаHTTP.Вставить("Host", "http://www.kgd.gov.kz";); Вот этот скорее ключевой заголовок: ЗаголовокЗапросаHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded"); неоднократно сталкивался, что без него сервер не обрабатывал запросы. |
|||
4
Vadimok
06.12.16
✎
11:22
|
Да из за этого заголовка не работало
|
|||
5
Serginio1
06.12.16
✎
12:55
|
Ну для начало нужно пользовать ся фиддлером.
Либо более продвинутом HTTPClient http://catalog.mista.ru/public/466052/ |
|||
6
Serginio1
06.12.16
✎
13:03
|
Например
Клиент = Врап.СоздатьОбъект(HttpClient); d = Врап.СоздатьОбъект(Dictionary); // Устанавливаешь параметры Например d.set_Item("User", "User"); d.set_Item("Password", "secret"); Контент=Врап.СоздатьОбъект(FormUrlEncodedContent,d); // Отправим пост запрос с данными формы по адресу находящемся в Action резулт=Клиент.PostAsync(Форма.Action,Контент).Result; // И получим ответ res=резулт.Content.ReadAsStringAsync().Result; |
|||
7
mehfk
06.12.16
✎
13:05
|
(6) Это уже не смешно.
|
|||
8
Serginio1
06.12.16
✎
13:19
|
(7) Почему?
|
|||
9
Mauser
06.12.16
✎
13:22
|
||||
10
Serginio1
06.12.16
✎
13:46
|
Спасибо! Ваши овации бесценны!
|
|||
11
oleg_km
06.12.16
✎
18:46
|
(10) Он похоже по себя. Стоит сказать .НЕТ и он тут как тут.
Кстати, прикольно. Надо это пространство System.Net.Http посмотреть, правда только с 4.5 |
|||
12
Serginio1
07.12.16
✎
10:21
|
(11) Да оно только 4.5, но возможностей выше крыши. В том числе за счет расширений.
Просто даже моя обертка компилится как под 4.6.1 так и под 4.0 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |