|   |   | 
| 
 | Сложности с 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 | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |