![]() |
![]() |
![]() |
|
Как из 1Cv8 сделать http-запрос к страничке с передачей данных методом POST | ☑ | ||
---|---|---|---|---|
0
aka clappa
08.12.06
✎
20:05
|
Вредный банковский сервер отказывается принимать параметры через URL-строку. Может, кто-нить подскажет, как их передать методом POST?
Нашел у объекта HTTPСоединение метод ОтправитьДляОбработки(...), но, похоже, мимо (по крайней мере, запрос к серверу с помощью этого метода не принес результатов). Короче, дошел до того, что сам нарисовал страничку-форму с нужными мне параметрами и кнопкой SUBMIT. При её нажатии запрос уходит на сервер, а затем возвращаются нужные мне данные. Теперь ломаю голову, как на эту кнопочку нажать автоматически. :-( |
|||
1
x4
08.12.06
✎
20:24
|
ОтправитьДляОбработки это именно POST, правда местами кривой: под 8.1 не удалось заставить его посылать больше одного моего заголовка, а под 8.0 работало ещё.
|
|||
2
x4
08.12.06
✎
20:24
|
и есть куча COM-объектов для этой цели - подними Поиск
|
|||
3
Drock
08.12.06
✎
20:48
|
objIE = Новый COMОбъект("InternetExplorer.Application");
objIE.Visible = Истина; // Отключаем видимость objIE.Silent = Ложь; objIE.Navigate(Адрес); Сообщить("Идет загрузка страницы. Ждите..."); Пока objIE.readyState<4 Цикл // Ждем пока загрузится сраница КонецЦикла; objDoc = objIE.Document; // Получаем объект HTML-Документ objForm=objDoc.forms(0); // Получаем первую форму в документе Попытка objForm.elements("username").value = Имя; // Заполняем поле формы "Имя пользователя" Исключение КонецПопытки; objForm.elements("Password").value = Тема; objForm.elements("submit").click(); |
|||
4
aka clappa
08.12.06
✎
20:51
|
(1) А как им пользоваться. Вроде разобрался, что второй параметр - путь к ресурсу на сервере, третий - имя локального файла для выгрузки результата, четвертый параметры (каждый на новой строке, имя и значение разделены двоеточием). А что указывать в первом параметре?
|
|||
5
aka clappa
08.12.06
✎
20:52
|
(3) Thank's, попробую
|
|||
6
Drock
08.12.06
✎
20:57
|
я вот счас парюсь над выполнением явы скрипта на странице :(
|
|||
7
Drock
08.12.06
✎
20:57
|
||||
8
Drock
08.12.06
✎
20:58
|
да и берешь открываешь в броузере страницу, открываешь HTML ресурс - и глядишь что и как на странице называеться, имею ввиду элементы формы
|
|||
9
Drock
08.12.06
✎
20:59
|
ну или отладчиком можно поглядеть что из себя представляет objDoc
|
|||
10
aka clappa
08.12.06
✎
23:19
|
x4, отзовись!
Я всё пытаюсь заставить работать ОтправитьДляОбработки(). Причем тренируюсь уже на Мисте. Решил вызвать из 1С поиск по форуму. Но нифига не выходит, хотя я даже сниффер поставил, отследил какой запрос IE отправляет при нажатии SUBMIT, и пытаюсь из-под 1С отправить точно такой же. Всё равно, в ответ возвращается исходная страничка поиска, как будто я вызывал её без параметров. Делаю так: Соединение = Новый HTTPСоединение("www.forum.mista.ru"); Соединение.Post("c:\query.txt", "/find.php", "c:\res.htm"); Файл query.txt выглядит следующим образом: POST http://www.forum.mista.ru/find.php HTTP/1.0 Accept: */* Referer: http://www.forum.mista.ru/find.php Accept-Language: ru Content-Type: application/x-www-form-urlencoded Proxy-Connection: Keep-Alive User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Host: www.forum.mista.ru Content-Length: 179 Pragma: no-cache keyword=Hello&action=find&author=&look_topic=1&look_message=1&skip_user=1&skip_topic_author=1&look_actual=1&look_1c=1&look_it=1&look_life=1§ion=&area=&period_since=-&period_to=- |
|||
11
x4
09.12.06
✎
20:20
|
(4),(10) HTTP-заголовки должны быть в четвёртом параметре ОтправитьДляОбработки(),
а параметры name=value в теле в гордом одиночестве. Вот работающий код: Соединение = Новый HTTPСоединение( "www.forum.mista.ru" ); Соединение.Post( "c:\query.txt", "find.php", "c:\res.htm", "Content-Type: application/x-www-form-urlencoded" ); содержимое файла "c:\query.txt": keyword=Hello&action=find а если потребуется передавать файл: 1. если он текстовый - то его имя в первый параметр, не ставить заголовок "Content-Type: application/x-www-form-urlencoded", и на сервер он придёт в stdin: copy( "php://input", $fn ); 2. если НЕ текстовый то поможет Base64Строка 3. можно поэкспериментировать с "Content-Type: multipart/form-data", особенно если файлов несколько. |
|||
12
aka clappa
10.12.06
✎
14:02
|
(11) Спасибо. Теперь всё ясно
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |