|
v8: HTTP Запрос (ОтправитьДляОбработки()) | ☑ | ||
---|---|---|---|---|
0
artyom_astt
17.05.13
✎
17:17
|
Пытаюсь передать параметры для обработки их на сайте и вернуть результат обработки, не могу понять почему в Результате обработки ничего не записывется во временный файл
|
|||
1
artyom_astt
17.05.13
✎
17:18
|
Вот Код:
имяФайлаОтправки = "d:\request.txt"; имяФайлОтправки = ПолучитьимяВременногоФайла("txt"); ЗаписьТекста = Новый ЗаписьТекста(имяФайлаОтправки); ЗаписьТекста.Записать("code="+КодФормы+"&series="+СерияБСО+"&number="+НомерБСО); ЗаписьТекста.Закрыть(); имяВыходногоФайла = ПолучитьимяВременногоФайла("xml"); // наш сервер возвращает ответы в виде XML //имяВыходногоФайла = "d:\answer.xml"; ФайлОтправки = Новый Файл(имяФайлаОтправки); РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер()); Соединение = Новый HTTPСоединение("www.m.blank.bisc.by/Query"); Заголовки = Новый Соответствие(); //Заголовки.Вставить("host", "http://m.blank.bisc.by/Query:8080"); ///// Запрос = Новый HTTPЗапрос(); Запрос.УстановитьТелоИзСтроки(); Соединение.Записать(Запрос); Соединение.ОтправитьДляОбработки(Запрос,"GetAnswer", имяВыходногоФайла, Заголовки); Попытка УдалитьФайлы(имяФайлаОтправки); Исключение КонецПопытки; // обработаем ответ сервера ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(имяВыходногоФайла); Пока ЧтениеXML.Прочитать() Цикл // чтение ответа в виде XML файла КонецЦикла; ЧтениеXML.Закрыть(); |
|||
2
Krendel
17.05.13
✎
17:18
|
Продолжайте пытатся, на следующий раз получится ;-)
|
|||
3
artyom_astt
17.05.13
✎
17:19
|
не обращайте внимание на пустой запрос, результатом обратоки явлется возвращаемый xml файл
|
|||
4
oleg_km
17.05.13
✎
17:26
|
(3) Ошибку-то какую выдает?
|
|||
5
artyom_astt
17.05.13
✎
17:28
|
{Форма.Форма.Форма(53)}: Ошибка при вызове метода контекста (ОткрытьФайл)
ЧтениеXML.ОткрытьФайл(имяВыходногоФайла); по причине: Файл не обнаружен 'C:\Users\AppData\Local\Temp\v8_92D9_75.xml' |
|||
6
drcrasher
17.05.13
✎
17:29
|
(0) всё, что связано с сайтами, внятно разжовано в (ОбщийМодуль||Обработка).ОбменССайтом
|
|||
7
Infsams654
17.05.13
✎
17:34
|
(3) Запрос = Новый HTTPЗапрос();
Запрос.УстановитьТелоИзСтроки(); Соединение.Записать(Запрос); Соединение.ОтправитьДляОбработки(Запрос... а так разве можно Put и Post с одинаковым запросом, тем более что он пустой ? |
|||
8
artyom_astt
17.05.13
✎
17:40
|
(7)
результатом обработки пустого запроса будет xmlфайл с соообщением, пытаюсь понять почему не отрабатывает создание временного файла |
|||
9
sttt
17.05.13
✎
17:42
|
вот так пробуй:
ИмяФайлаОтправки = ПолучитьИмяВременногоФайла("txt"); POSTПараметры = Новый ЗаписьТекста(ИмяФайлаОтправки, КодировкаТекста.UTF8,, Истина, Символы.ПС); //ТекстБезБОМ POSTПараметры.Записать("code=" + КодФормы + "&series=" + СерияБСО + "&number=" + НомерБСО); POSTПараметры.Закрыть(); ИмяВыходногоФайла = ПолучитьИмяВременногоФайла("xml"); ФайлОтправки = Новый Файл(ИмяФайлаОтправки); РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер()); Данные = "code=" + КодФормы + "&series=" + СерияБСО + "&number=" + НомерБСО; Заголовки = Новый Соответствие(); Заголовки.Вставить("POST /Query HTTP/1.1"); Заголовки.Вставить("Host", "www.m.blank.bisc.by"); Заголовки.Вставить("Referer", "www.m.blank.bisc.by"); Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded"); Заголовки.Вставить(Данные); Соединение = Новый HTTPСоединение("www.m.blank.bisc.by"); Соединение.ОтправитьДляОбработки(ИмяФайлаОтправки, "v8", ИмяВыходногоФайла, Заголовки); Попытка УдалитьФайлы(ИмяФайлаОтправки); Исключение КонецПопытки; ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ИмяВыходногоФайла); Пока ЧтениеXML.Прочитать() Цикл ... КонецЦикла; ЧтениеXML.Закрыть(); Попытка УдалитьФайлы(ИмяВыходногоФайла); Исключение КонецПопытки; |
|||
10
sttt
17.05.13
✎
17:43
|
Соединение.ОтправитьДляОбработки(ИмяФайлаОтправки, "v8", ИмяВыходногоФайла, Заголовки);
замени на это Соединение.ОтправитьДляОбработки(ИмяФайлаОтправки, "Query", ИмяВыходногоФайла, Заголовки); |
|||
11
sttt
17.05.13
✎
17:44
|
и это лишнее:
Данные = "code=" + КодФормы + "&series=" + СерияБСО + "&number=" + НомерБСО; и это: Заголовки.Вставить(Данные); |
|||
12
artyom_astt
17.05.13
✎
17:49
|
Вот ругается:
{Форма.Форма.Форма(82)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки) Соединение.ОтправитьДляОбработки(ИмяФайлаОтправки, ИмяВыходногоФайла, Заголовки); по причине: Ошибка при выполнении файловой операции 'C:\Users\astapenko\AppData\Local\Temp\v8_92D9_81.xml' по причине: Ошибка работы с Интернет: неверный формат ответа шлюзу (502). <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD><TITLE>Сообщение об ошибке</TITLE> |
|||
13
artyom_astt
17.05.13
✎
17:50
|
(10) Убрал параметр Query на него тогда ругался
|
|||
14
sttt
17.05.13
✎
17:53
|
(13) заработало?
|
|||
15
artyom_astt
17.05.13
✎
17:54
|
нет.. убрал парамет query до того как получил ошибку в сообщении 12
|
|||
16
sttt
17.05.13
✎
17:57
|
ты во втором параметре убрал или в заголовке?
должно быть так: Соединение.ОтправитьДляОбработки(ИмяФайлаОтправки, "Query", ИмяВыходногоФайла, Заголовки); у тебя же адрес: www.m.blank.bisc.by/Query |
|||
17
sttt
17.05.13
✎
17:58
|
и ты через шлюз работаешь?
|
|||
18
sttt
17.05.13
✎
18:00
|
Прокси = Новый ИнтернетПрокси;
Прокси.Установить("http", "IP твоего шлюза", 3919); HTTPСоединение = Новый HTTPСоединение("www.m.blank.bisc.by",,, Прокси); |
|||
19
artyom_astt
17.05.13
✎
18:00
|
(16)Да, я убрал во втором парметре! Если оставить его на месте то вот какую ошибку ловлю:
{Форма.Форма.Форма(82)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки) Соединение.ОтправитьДляОбработки(ИмяФайлаОтправки,"Query", ИмяВыходногоФайла, Заголовки); по причине: Ошибка при выполнении файловой операции 'Query' по причине: (17) Да работаю через шлюз, по-другому никак |
|||
20
sttt
17.05.13
✎
18:04
|
(18) ну как, с этим (18) работает?
|
|||
21
artyom_astt
17.05.13
✎
18:06
|
(20) к сожелению ошибка всё таже
|
|||
22
sttt
17.05.13
✎
18:09
|
уточни у админов параметры прокси.
пример скинул рабочий, правда локально проверенный. может еще кодировку UTF8 поменять в POSTПараметры = Новый ЗаписьТекста(ИмяФайлаОтправки, КодировкаТекста.UTF8,, Истина, Символы.ПС); //ТекстБезБОМ |
|||
23
artyom_astt
17.05.13
✎
18:11
|
(22) сейчас попробую
|
|||
24
artyom_astt
17.05.13
✎
18:13
|
(22) а на какую кодировку то менять?? я так понимаю Вы уже реализовали нечто подобное и оно у Вас нормально работает?
|
|||
25
sttt
17.05.13
✎
18:17
|
да, у меня работает. только я не с этим www.m.blank.bisc.by
этот адрес в браузере не открывается, а через 1с не пытался |
|||
26
artyom_astt
17.05.13
✎
18:22
|
хммм, интересно. на адрес в (25) не заходит, но через http://m.blank.bisc.by/ без проблем
|
|||
27
sttt
17.05.13
✎
18:25
|
(26) так может поменять www.m.blank.bisc.by везде на m.blank.bisc.by
|
|||
28
artyom_astt
17.05.13
✎
18:27
|
Вариант синтаксиса: По HTTP-запросу
Синтаксис: ОтправитьДляОбработки(<HTTPЗапрос>, <ИмяВыходногоФайла>) Параметры: <HTTPЗапрос> (обязательный) Тип: HTTPЗапрос. HTTP-запрос. <ИмяВыходногоФайла> (необязательный) sttt это нормально что в синт.помощнике метод описан по другому?? |
|||
29
sttt
17.05.13
✎
18:33
|
поменяй адрес http://m.blank.bisc.by/Query и жизнь наладиться и похоже прокси тебе не нужен, проблема была в неверном адресе
у меня так: ОтправитьДляОбработки(<Источник>, <АдресРесурса>, <ИмяВыходногоФайла>, <Заголовки>) Параметры: <Источник> (обязательный) Тип: Строка. Имя файла-источника. <АдресРесурса> (обязательный) Тип: Строка. Адрес ресурса на сервере, в который посылаются данные из источника. <ИмяВыходногоФайла> (обязательный) Тип: Строка. Имя выходного файла, в который записываются полученные с сервера данные. <Заголовки> (необязательный) Тип: Строка. Указываются заголовки, добавляемые к запросу на сервер. Текстовые пары вида <Заголовок>:<Значение>, разделяемые комбинацией ВК+ ПС. Описание: Отправить ресурс на указанный адрес для обработки. Доступность: Тонкий клиент, сервер, толстый клиент, внешнее соединение. |
|||
30
artyom_astt
17.05.13
✎
18:48
|
Cпасибо за проявляемый интерес, изменил адрес и вот что пишет:
{Форма.Форма.Форма(86)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки) Соединение.ОтправитьДляОбработки(ИмяФайлаОтправки,"Query", ИмяВыходногоФайла, Заголовки); по причине: Ошибка работы с Интернет: Couldn't resolve host name |
|||
31
sttt
17.05.13
✎
18:50
|
(30) у тебя где то адрес старый прописан, ищи
|
|||
32
sttt
17.05.13
✎
18:50
|
+(31) у меня работает
|
|||
33
artyom_astt
17.05.13
✎
18:57
|
ИмяФайлаОтправки = ПолучитьИмяВременногоФайла("txt");
POSTПараметры = Новый ЗаписьТекста(ИмяФайлаОтправки, КодировкаТекста.UTF8,, Истина, Символы.ПС); //ТекстБезБОМ POSTПараметры.Записать("code=" + КодФормы + "&series=" + СерияБСО + "&number=" + НомерБСО); POSTПараметры.Закрыть(); ИмяВыходногоФайла = ПолучитьИмяВременногоФайла("xml"); ФайлОтправки = Новый Файл(ИмяФайлаОтправки); РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер()); // Данные = "code=" + КодФормы + "&series=" + СерияБСО + "&number=" + НомерБСО; Заголовки = Новый Соответствие(); Заголовки.Вставить("POST /Query HTTP/1.1"); Заголовки.Вставить("Host", "http://m.blank.bisc.by"); Заголовки.Вставить("Referer", "http://m.blank.bisc.by"); Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded"); // Заголовки.Вставить(Данные); //Прокси = Новый ИнтернетПрокси; //Прокси.Установить("http", "192.168.0.206", 8080); //Соединение = Новый HTTPСоединение("http://m.blank.bisc.by"); Соединение = Новый HTTPСоединение("http://m.blank.bisc.by"); Соединение.ОтправитьДляОбработки(ИмяФайлаОтправки,"Query", ИмяВыходногоФайла, Заголовки); Попытка УдалитьФайлы(ИмяФайлаОтправки); Исключение КонецПопытки; ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ИмяВыходногоФайла); Пока ЧтениеXML.Прочитать() Цикл КонецЦикла; ЧтениеXML.Закрыть(); Попытка УдалитьФайлы(ИмяВыходногоФайла); Исключение КонецПопытки; |
|||
34
artyom_astt
17.05.13
✎
18:58
|
(33) не срабатывает, ошибка из (30)
|
|||
35
sttt
17.05.13
✎
19:00
|
замени везде "http://m.blank.bisc.by" на
Заголовки.Вставить("Host", "m.blank.bisc.by"); Заголовки.Вставить("Referer", "m.blank.bisc.by"); и т.д. |
|||
36
sttt
17.05.13
✎
19:00
|
и вот это лишнее:
ФайлОтправки = Новый Файл(ИмяФайлаОтправки); РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер()); |
|||
37
artyom_astt
18.05.13
✎
11:04
|
Всё поправил как Вы сказали, но увы получаю ошибку из (30)
|
|||
38
sttt
18.05.13
✎
13:05
|
(37) невероятно))
ладно не буду мучить, вот рабочий вариант, единственное сделано на управляемых формах, соответственно необходимо поменять реквизиты: ИмяФайлаОтправки = ПолучитьИмяВременногоФайла("txt"); POSTПараметры = Новый ЗаписьТекста(ИмяФайлаОтправки, КодировкаТекста.UTF8,, Истина, Символы.ПС); //ТекстБезБОМ POSTПараметры.Записать("code=" + Объект.КодФормы + "&series=" + Объект.СерияБСО + "&number=" + Объект.НомерБСО); POSTПараметры.Закрыть(); ИмяВыходногоФайла = ПолучитьИмяВременногоФайла("txt"); Заголовки = Новый Соответствие(); Заголовки.Вставить("POST /GetAnswer HTTP/1.1"); Заголовки.Вставить("Host", "m.blank.bisc.by"); Заголовки.Вставить("Referer", "http://m.blank.bisc.by/Query"); Заголовки.Вставить("Cookie", "ASP.NET_SessionId=orlnnpbz2vrxrbuobsh4fmom"); // без этих кукисов работать не будет и в ЗаголовокGET такой же должен быть. посмотри по форуму, недавно пробегал пример как куки подставлять Заголовки.Вставить("Connection", "keep-alive"); Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded"); Соединение = Новый HTTPСоединение("m.blank.bisc.by"); Соединение.ОтправитьДляОбработки(ИмяФайлаОтправки, "GetAnswer", ИмяВыходногоФайла, Заголовки); ЗаголовокGET = Новый Соответствие(); ЗаголовокGET.Вставить("GET /BlankInfo HTTP/1.1"); ЗаголовокGET.Вставить("Host", "m.blank.bisc.by"); ЗаголовокGET.Вставить("Referer", "http://m.blank.bisc.by/Query"); ЗаголовокGET.Вставить("Cookie", "ASP.NET_SessionId=orlnnpbz2vrxrbuobsh4fmom"); ЗаголовокGET.Вставить("DNT", "1"); ЗаголовокGET.Вставить("Connection", "keep-alive"); Соединение.Получить("/BlankInfo", ИмяВыходногоФайла, ЗаголовокGET); Попытка УдалитьФайлы(ИмяФайлаОтправки); Исключение КонецПопытки; ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.Прочитать(ИмяВыходногоФайла); Объект.Ответ = ТекстовыйДокумент.ПолучитьТекст(); ЭтаФорма.ОтветHTML = ТекстовыйДокумент.ПолучитьТекст(); Попытка УдалитьФайлы(ИмяВыходногоФайла); Исключение КонецПопытки; |
|||
39
artyom_astt
18.05.13
✎
13:25
|
Спасибо Вам большое, буду разбираться...!
|
|||
40
artyom_astt
18.05.13
✎
22:22
|
ошибки о которых писал выше отсутствуют, спасибо за это!!!
с куки пока не разобрался увы! |
|||
41
sttt
19.05.13
✎
22:53
|
придется переделать под:
WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.Option(2,"Windows-1251"); WinHttp.Open("POST", "https://site.ru",0); WinHttp.Send(НовыйЗапрос); Кукиз= WinHttp.getResponseHeader("Set-cookie"); это нетрудно |
|||
42
artyom_astt
20.05.13
✎
10:06
|
С таким методом пока не приходилось сталкиваться, буду пытаться! Спасиб
|
|||
43
acsent
20.05.13
✎
10:15
|
(41) 1с тоже с куками умеет
|
|||
44
artyom_astt
20.05.13
✎
10:16
|
(43) может подкинете где почитать, хотелось бы обойтись без ком объектов
|
|||
45
acsent
20.05.13
✎
10:17
|
HTTPОтвет = Соединение.ОтправитьДляОбработки(Запрос...
далее смотрим HTTPОтвет |
|||
46
oleg_km
20.05.13
✎
10:42
|
(45) Это вроде только с 8.1.18?
|
|||
47
acsent
20.05.13
✎
10:43
|
(46) а че у когото не что ли?
|
|||
48
artyom_astt
20.05.13
✎
11:01
|
всё норм у меня 8.2
|
|||
49
artyom_astt
20.05.13
✎
11:28
|
Sttt, есть к Вам вопрос, как к человеку проявившему наибольшее внимание... Для чего мне нужны cookie в моем случае? может из-за непонимания вопроса у меня ничего и не выходит.....
в принципе если кто сможет пояснить,буду очень признателен |
|||
50
artyom_astt
20.05.13
✎
11:29
|
Ниже содержание, вернувшегося в результате обработки запроса, сообщения
<html><head><title>Object moved</title></head><body> <h2>Object moved to <a href="/Query">here</a>.</h2> </body></html> |
|||
51
artyom_astt
20.05.13
✎
12:55
|
до того момента как всё заработает осталось немного, только с куки разобраться...
|
|||
52
artyom_astt
21.05.13
✎
11:39
|
поднимаю
|
|||
53
Infsams654
21.05.13
✎
11:52
|
(51) в чем проблемы ? ЗаголовкиЗапроса.Вставить("Cookie", Cookie.Имя + "=" + Cookie.Текст);
|
|||
54
artyom_astt
21.05.13
✎
12:51
|
(51) c кодом нет проблемы. Не понимаю что есть Cookie.Имя и Cookie.Текст, и откуда их брать.
P.S. сорри за жесткий тупняк, с моей стороны |
|||
55
artyom_astt
21.05.13
✎
15:17
|
Вот исходный код страницы с обработанным запросом (параметры забивал вручную)...
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"> <html> <head> <title>Мобильная версия - АС БДБ</title> <link href="/Resources/Content/core.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="header" class="header"> <a href="/">АС БДБ</a> </div> <div id="subtitle" class="subtitle"> Запрос обработан </div> <div id="body" class="body"> <div id="RequestInfoDiv"> <span> <label for="Blank_Code">Код</label>: <strong>401851</strong><br /> <label for="Blank_Name">Наименование</label>: <strong>ТН-2 (ПЭВМ) а4 1х2 </strong><br /> <label for="Blank_Series">Серия</label>: <strong>ФК</strong><br /> <label for="Blank_Number">Номер</label>: <strong>1083246</strong> </span> </div> <hr /> <u>Приобретен</u> <div id="PurchaseInfoTable"> <label for="Blank_PurchaseInfo_RegistrationNumber">УНП</label>: <strong>290473870</strong><br /> <label for="Blank_PurchaseInfo_EconomicEntityName">Наименование</label>: <strong>Общество с ограниченной ответственностью "Успех про"</strong><br /> <label for="Blank_PurchaseInfo_Date">Дата</label>: <strong>4.3.2013</strong><br /> </div> </div> <div id="footer" class="footer"> <a href="/Soi">Полная версия сайта</a> <br /> <span>© Расчетный центр НБ РБ</span> </div> </body> </html> |
|||
56
artyom_astt
21.05.13
✎
16:47
|
Кто сталкивался, обратите внимание, не проходите мимо
(38) код отправки запроса (55) обработанный запрос (параметры рууками заполнял) (50) файл полученный с сайта Как в 1с вместо (50) получить нормальный ответ, который содержится в (55) ?? |
|||
57
acsent
21.05.13
✎
16:49
|
fiddler поставь и посмотри что передаешь ты, а что браузер
|
|||
58
artyom_astt
21.05.13
✎
17:12
|
(57) попробую позже, но сейчас нет возможности (нет прав)!!!
вопрос еще актуален |
|||
59
Infsams654
21.05.13
✎
17:15
|
(54) на то они и куки, что понимаются клиентом и сервером. Если не знаешь протокола общения, то и не лезь
|
|||
60
blopp
21.05.13
✎
17:33
|
(56)
Ну типа подумать головой и отработать редирект, не? |
|||
61
artyom_astt
21.05.13
✎
18:31
|
Спасибо всем кто попытался помочь, в особенности Sttt !!!!
Всё заработало благодаря тулзе fiddler |
|||
62
oleg_km
21.05.13
✎
22:10
|
(61) В следующий раз прямо с нее и начинай
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |