|
Как юзать HTTPСоединение? для POST метода | ☑ | ||
---|---|---|---|---|
0
SOLO1C
19.05.09
✎
11:04
|
Ситуация такая - пытаюсь методами пост запросов залогиниться на сайт
Для просмотра заголовков использовал HttpAnalyzerFullV2 |
|||
1
SOLO1C
19.05.09
✎
11:05
|
Написал такой код
СтруктураПараметровСайта = ПолучитьСтруктуруПараметровДляСоединения(Объект, Объект.HTTPОбменАдресСайта); Соединение = HTTPУстановитьСоединение(СтруктураПараметровСайта); Если Соединение = Неопределено Тогда Возврат "Ошибка при установке соединения с сайтом."; КонецЕсли; Заголовки = "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, */*"+Символы.ВК+Символы.ПС +"Referer: http://trofim/published/login.php?"+Символы.ВК+Символы.ПС +"Accept-Language: ru"+Символы.ВК+Символы.ПС + "Content-Type: application/x-www-form-urlencoded"+Символы.ВК+Символы.ПС + "UA-CPU: x86"+Символы.ВК+Символы.ПС + "Accept-Encoding: gzip, deflate"+Символы.ВК+Символы.ПС + "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"+Символы.ВК+Символы.ПС + "Host: trofim"+Символы.ВК+Символы.ПС + "Content-Length: 133"+Символы.ВК+Символы.ПС + "Connection: Keep-Alive"+Символы.ВК+Символы.ПС + "Cache-Control: no-cache"+Символы.ВК+Символы.ПС + "Cookie: wbs_login_host=TROFIM; screenMode=max"; ОтветСервера = HTTPПолучитьДанныеССервера(Соединение, СтруктураПараметровСайта.АдресСкрипта + "?userdata%5BDB_KEY%5D=TROFIM&edited=1&userdata%5BU_ID%5D=admin&userdata%5BU_PASSWORD%5D=123456&C=",Заголовки); Если ОтветСервера = Неопределено Тогда СтрокаСообщенияПользователю = "Не удалось установить соединение с сервером. Авторизация пользователя не выполнена." + Символы.ПС + ОписаниеОшибки(); Возврат Ложь; КонецЕсли; |
|||
2
SOLO1C
19.05.09
✎
11:05
|
Функция HTTPПолучитьДанныеССервера(Соединение, ПараметрыЗапроса="", Заголовки="", СтрокаСообщенияПользователю = "") Экспорт
ОтветСервера = Неопределено; ИмяФайлаОтвета = ПолучитьИмяВременногоФайла(); Попытка Соединение.Получить(СокрЛП(ПараметрыЗапроса), ИмяФайлаОтвета, СокрЛП(Заголовки)); Исключение СтрокаСообщенияПользователю = "Не удалось получить данные с сервера.Проверьте правильность адреса сервера, порт, имя пользователя и пароль," + Символы.ПС + "а также настройки подключения к Интернет."; КонецПопытки; ФайлОтвета = Новый Файл(ИмяФайлаОтвета); Если ФайлОтвета.Существует() Тогда ТекстОтвета = Новый ТекстовыйДокумент(); ТекстОтвета.Прочитать(ИмяФайлаОтвета); Если ТекстОтвета.КоличествоСтрок()>0 Тогда ОтветСервера = ТекстОтвета.ПолучитьТекст(); Иначе СтрокаСообщенияПользователю = "Получение данных с сервера: Получен пустой ответ сервера."; КонецЕсли; Иначе СтрокаСообщенияПользователю = "Получение данных с сервера: Ответ сервера не получен."; КонецЕсли; Попытка УдалитьФайлы(КаталогВременныхФайлов(), ИмяФайлаОтвета); Исключение КонецПопытки; Возврат ОтветСервера; КонецФункции |
|||
3
SOLO1C
19.05.09
✎
11:07
|
Вот это центральная строка:
Соединение.Получить(СокрЛП(ПараметрыЗапроса), ИмяФайлаОтвета, СокрЛП(Заголовки)); И она в моем случае ничего не возвращает. Есть подозрение что метод Соединение.Получить = GET а не POST. Правда ? |
|||
4
SOLO1C
19.05.09
✎
11:28
|
Или обязательно использовать объект("WinHttp.WinHttpRequest.5.1")?
|
|||
5
SOLO1C
19.05.09
✎
11:36
|
АП - неужели никто ен знает метод Соединение.Получить это GET или POST или вообще он сам определяется.
|
|||
6
lamme
19.05.09
✎
11:44
|
щас погодь .. залезу посмотрю ...
пользовался такой |
|||
7
lamme
19.05.09
✎
11:50
|
у меня так работает:
перем HTTP Функция УстановитьСоединение() Прокси = Новый ИнтернетПрокси(); Прокси.Установить("http",СокрЛП(ЭлементыФормы.ПроксиСервер.Значение),ЭлементыФормы.ПроксиПорт.Значение); Прокси.Пользователь = СокрЛП(ЭлементыФормы.ПроксиИмяПользователя.Значение); Прокси.Пароль = СокрЛП(ЭлементыФормы.ПроксиПарольПользователя.Значение); Попытка HTTP = Новый HTTPСоединение(СерверИсточник,,,, Прокси); // Возврат Истина; Исключение Сообщить("Ошибка подключения: " + ОписаниеОшибки()); Возврат Ложь; КонецПопытки; КонецФункции // УстановитьСоединение() Процедура ПолучитьЧегониб() Адрес = "/jcgate/gate.php/"; ИмяВходящегоФайла = КВФ + "adr_.txt"; Попытка HTTP.Получить(Адрес, ИмяВходящегоФайла); Исключение Сообщить("Ошибка получения данных: " + ОписаниеОшибки()); Возврат Ложь; КонецПопытки; конецпроцедуры в итоге - получается файл : КВФ + "adr_.txt"; |
|||
8
lamme
19.05.09
✎
11:51
|
(3)
а вообще HTTPСоединение.Получить (HTTPConnection.Get) HTTPСоединение (HTTPConnection) Получить (Get) Синтаксис: Получить(<Источник>, <Имя выходного файла>, <Заголовки>) Параметры: <Источник> (обязательный) Тип: Строка. Адрес ресурса на сервере. <Имя выходного файла> (обязательный) Тип: Строка. Имя файла, в который помещаются данные полученного ресурса. <Заголовки> (необязательный) Тип: Строка. Указываются заголовки, добавляемые к запросу на сервер. Текстовые пары вида <Заголовок>:<Значение>, разделяемые комбинацией ВК + ПС. Описание: Получает ресурс из указанного адреса. |
|||
9
SOLO1C
19.05.09
✎
11:56
|
(8) Спасибо, теперь понятно что это GET - но мне нужно заPOSTить данные на сервер для залогинивания. Т.е. мне нужен POST - а твой пример вроде именно GET
|
|||
10
SOLO1C
19.05.09
✎
11:59
|
Ой туплю в СП же написано ОтправитьДляОбработки (Post)
|
|||
11
Поручик
19.05.09
✎
12:01
|
Типа попиариться. Вдруг кому пригодится
http://infostart.ru/blogs/1066/ |
|||
12
SOLO1C
19.05.09
✎
12:04
|
(11) Круто - спасибо - гугля ее не нашла вроде
|
|||
13
SOLO1C
19.05.09
✎
12:47
|
(12) Если есть POST запрос "userdata%5BDB_KEY%5D=TROFIM&edited=1&userdata%5BU_ID%5D=admin&userdata%5BU_PASSWORD%5D=123456&enter=%D0%92%D0%BE%D0%B9%D1%82%D0%B8&C="
Как мне его правильно запихнуть в файл ? Обязательно это boundary ? И вот это все : ФайлОтправки.ЗаписатьСтроку("--" + Boundary); ФайлОтправки.ЗаписатьСтроку("Content-disposition: form-data; name=""backurl""" + Символы.ПС); ФайлОтправки.ЗаписатьСтроку("/"); ФайлОтправки.ЗаписатьСтроку("--" + Boundary); Просто строкой вроде не отрабатывает :(; |
|||
14
SOLO1C
19.05.09
✎
12:48
|
(12)->(11)
|
|||
15
SOLO1C
19.05.09
✎
12:57
|
(14) Есть вот такой стрим, всетаки как его запихунть в ПОСТ?:
POST /published/login.php HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-ms-application, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-ms-xbap, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */* Referer: http://trofim/published/login.php Accept-Language: ru Content-Type: application/x-www-form-urlencoded UA-CPU: x86 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.30618) Host: trofim Content-Length: 133 Connection: Keep-Alive Cache-Control: no-cache Cookie: onbrowsercloseexpire=1; wbs_login_host=TROFIM; PHPSESSID=b38b0eb5da740362cdf242b189700cde userdata%5BDB_KEY%5D=TROFIM&edited=1&userdata%5BU_ID%5D=admin&userdata%5BU_PASSWORD%5D=123456&enter=%D0%92%D0%BE%D0%B9%D1%82%D0%B8&C= |
|||
16
SOLO1C
19.05.09
✎
15:35
|
Как извлечь из ответа Заголовки?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |