forum.bitel.ru http://forum.bitel.ru/ |
|
Доступ к таблицам биллинга извне. Изменился протокол? http://forum.bitel.ru/viewtopic.php?f=19&t=6874 |
Страница 1 из 1 |
Автор: | рукашы [ 18 июн 2012, 17:14 ] |
Заголовок сообщения: | Доступ к таблицам биллинга извне. Изменился протокол? |
Пытаюсь достучаться к базе биллинга (версия 5.2) из 1С через https посредством MSXML2.XMLHTTP по аналогии с описанным в документации биллинга версии 4.4 способом. Просто потому, что для новых версий соответствующий раздел отсутствует в документации. Метод Send возвращает ошибку 2146697208 (пытаюсь просто прочитать таблицу договоров точно так же как в клиенте через SQL-редактор). В режиме отладки клиента биллинга получил нужную строку запроса - она несколько отличается от описанной в старой документации. Но приведение в соответствие с ней не изменило результата. Может ли это быть из-за того, что в строке запроса присутствует составляющая &BGBillingSecret= с каким-то ключом? Вместо неё я передаю &user= и &pswd= (как описано). Что я могу делать не так? Работает ли вообще в версии 5.2 подобный доступ к таблицам биллинга через https из внешних систем? |
Автор: | dimOn [ 18 июн 2012, 18:04 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
текст ошибки то какой? |
Автор: | рукашы [ 18 июн 2012, 18:29 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
"Ошибка при вызове метода контекста (send): Произошла исключительная ситуация (msxml3.dll): Системная ошибка: -2146697208" Если подключаю "MSXML2.XMLHTTP.4.0", то (msxml3.dll) ожидаемо меняется на (msxml4.dll) в тексте ошибки. Код ошибки, если верить гуглу, соответствует слишком общей ошибке, чтобы натолкнуть на конкретную мысль. Для меня важно для начала знать - работает у кого-то в аналогичных условиях (5.2 и через https извне) или нет. Чтобы не тратить зря время, если не работает. |
Автор: | рукашы [ 18 июн 2012, 18:46 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
В старой документации предлагается генерить такую подстроку для получения результата произвольного запроса к базе биллинга(после строки подключения): "module=admin&action=SQLEditor&pageSize=100000&sql=" +query . Ну и плюс логин/пароль. В режиме отладки клиента биллинга 5.2 подсмотрел такую строку: "module=sqleditor&action=SQLEditor&pageSize=25&base=main&sql=" + query. Порядок параметров подогнал под старый пример для наглядности. Т.е. как минимум поменялось имя модуля. Ну и еще параметр BGBillingSecret смущает, о котором я писал в сабже. Ошибку, похоже, возвращает одну и ту же в случае если сервер биллинга отвергает запрос. |
Автор: | aardvark [ 18 июн 2012, 19:40 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
забейте на secret он используется только для клиента. С 4.4 мог поменяться формат xml выдаваемый биллингом. с 4.6 на 5.1 точно немного менялся для договоров. Проверьте разницу между тем что у вас msxml хочет и что ему выдают. |
Автор: | рукашы [ 18 июн 2012, 19:54 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
aardvark писал(а): забейте на secret он используется только для клиента. С 4.4 мог поменяться формат xml выдаваемый биллингом. с 4.6 на 5.1 точно немного менялся для договоров. Проверьте разницу между тем что у вас msxml хочет и что ему выдают. Ага! На это я и надеялся (относительно secret). В том-то и проблема, что я не могу никакого xml получить ![]() Метод send при получении результата POST валит исключение ![]() |
Автор: | рукашы [ 18 июн 2012, 20:11 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
Делаю буквально следующее: Open("POST", "https://СайтБиллинга:ПортБиллинга/bgbilling/executer?", 0) setRequestHeader("content-type", "application/x-www-form-urlencoded") Дальше хочу послать простейший запрос для пробы - "select id from contract" Сначала делал как в старой доке: Send( "user=Пользователь&pswd=Пароль&module=admin&action=SQLEditor&pageSize=100000&sql=ТекстЗапросаUrlencoded") Болт. И что уже только не делал. Результат один и тот же... |
Автор: | Phricker [ 18 июн 2012, 21:52 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
Код: Функция ПослатьЗапрос( query ) // URL сервера биллинга url="http://127.0.0.1:8080/bgbilling/executer?"; // логин и пароль пользователя биллинга user="password"; pswd ="login:)"; Попытка odd=Новый COMОбъект("MSXML2.XMLHTTP"); odd.Open("Post", url, 0); odd.setRequestHeader("content-type", "application/x-www-form-urlencoded"); i = odd.Send( "user="+ user + "&pswd="+ pswd + "&" + query ); od = odd.responseXML; // распечатка запросов и ответов, можно включить для отладки //Сообщить( "Урл: " + url+"user="+ user + "&pswd="+ pswd + "&" + query) ; //Сообщить( "Запрос: '" + query + "'"); //Сообщить( "Результат: " + od.xml ); Исключение Сообщить( "Ошибка: " + ОписаниеОшибки() ); КонецПопытки; Возврат od; КонецФункции Функция SQLЗапрос( query ) Возврат ПослатьЗапрос( "module=sqleditor&action=SQLEditor&pageSize=100000&sql=" + URLEncode( query ) ); КонецФункции Функция ПолучитьСписокКлиентов() SQL= "SELECT c.id, c.title from contract"; ans = SQLЗапрос( SQL ) ; clients = ans.SelectNodes( "data/table/data/row"); Возврат clients; КонецФункции Module=admin в 5.2 уже не работает кстати ![]() Помню как обновлялся на новый год на 5.2 а потом меня бухи будили когда выгрузку надо было делать ![]() |
Автор: | skn [ 18 июн 2012, 22:14 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
может вам лучше напрямик в БД через ODBC драйвер ломиться? |
Автор: | Phricker [ 18 июн 2012, 23:58 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
Не знаю у меня вот так вот все работает ![]() Еще Ахматом сделанная обработка в 1С ![]() |
Автор: | skyb [ 19 июн 2012, 04:34 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
Phricker писал(а): Помню как обновлялся на новый год на 5.2 а потом меня бухи будили когда выгрузку надо было делать ![]() первого числа в 8 утра? ![]() |
Автор: | рукашы [ 19 июн 2012, 13:37 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
Phricker писал(а): Module=admin в 5.2 уже не работает кстати ![]() Помню как обновлялся на новый год на 5.2 а потом меня бухи будили когда выгрузку надо было делать ![]() Так тоже делал. Та же самая ошибка. Но я вроде как докопался до корня зла. Наконец, сообразил сделать то, что следовало сделать сразу. Подставил сгенерированную строку запроса тупо в браузер. А он мне и выдал - "Сертификат не является доверенным для этого сайта бла-бла-бла" (я ведь через https стучусь). Ежели жмешь - все равно выполнить запрос, тогда браузер таки возвращает правильную xml-ку. Но "https" в строке браузера (Chrome) демонстративно перечеркивает. Т.е. ошибку именно из-за этого возвращает, как я понимаю. Как это можно обойти самым простым и тупым способом (не покупая кашерного сертификата и т.п)? Извините за возможно ламерский запрос, я в интернет-технологиях не настоящий сварщик. |
Автор: | рукашы [ 19 июн 2012, 13:39 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
skn писал(а): может вам лучше напрямик в БД через ODBC драйвер ломиться? Так и делаю для других биллингов. Это запасной вариант. Просто как правило биллинги не в локалке и приходится еще костыли тулить. Через http вроде как более кашерно. |
Автор: | dimOn [ 19 июн 2012, 13:54 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
рукашы писал(а): "Ошибка при вызове метода контекста (send): Произошла исключительная ситуация (msxml3.dll): Системная ошибка: -2146697208" Если подключаю "MSXML2.XMLHTTP.4.0", то (msxml3.dll) ожидаемо меняется на (msxml4.dll) в тексте ошибки. Код ошибки, если верить гуглу, соответствует слишком общей ошибке, чтобы натолкнуть на конкретную мысль. Для меня важно для начала знать - работает у кого-то в аналогичных условиях (5.2 и через https извне) или нет. Чтобы не тратить зря время, если не работает. а... понял... ошибка 1С а не биллинга. ну так сам url то доступен вообще 1с-кой? в браузере вы его можете открыть? upd , ок |
Автор: | рукашы [ 19 июн 2012, 14:00 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
dimOn писал(а): а... понял... ошибка 1С а не биллинга. ну так сам url то доступен вообще 1с-кой? в браузере вы его можете открыть? upd , ок Ошибка не биллинга. Но и не 1С. Ошибка при работе через MSXML2.XMLHTTP. Сертификат сделал доверенным. Любой браузер теперь возвращает правильный ответ без всяких оговорок. Но при попытке спросить через MSXML2.XMLHTTP эту же фигню по-прежнему возвращает ошибку. Может, есть еще какие-то тонкости c https через MSXML2.XMLHTTP? Кто еще забирает данные в 5.2 через https с помощью MSXML2.XMLHTTP? Отзовитесь! |
Автор: | Amir [ 19 июн 2012, 14:47 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
Не работает только через HTTPS, или через HTTP тоже, или через HTTP проверить нет возможности? Брандмауэр не закрывает доступ 1C'у для подключения к биллингу? URL правильный? Протокол https, порт https, метод POST, в URL нет никаких параметров и вопросиков, как при GET, т.е. "https://127.0.0.1:8443/bgbilling/executer"? |
Автор: | рукашы [ 19 июн 2012, 15:18 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
Amir писал(а): Не работает только через HTTPS, или через HTTP тоже, или через HTTP проверить нет возможности? Брандмауэр не закрывает доступ 1C'у для подключения к биллингу? URL правильный? Протокол https, порт https, метод POST, в URL нет никаких параметров и вопросиков, как при GET, т.е. "https://127.0.0.1:8443/bgbilling/executer"? Прочитал, что подобная ошибка типична для многих сервисов, когда к ним тупо закрыт доступ (брендмауэром, например). Перепробовал все что мог - отключал брендмауэр, антивирус, в политиках безопасности лазил... Через http проверить нет возможности. Куда еще можно заглянуть? Код: url = "https://Сайт:8443/bgbilling/executer?"; odd.Open("POST", url, 0); odd.setRequestHeader("content-type", "application/x-www-form-urlencoded"); i = odd.Send("user=Юзер&pswd=Пароль&module=sqleditor&action=SQLEditor&pageSize=100000&sql=%53%45%4C%45%43%54%20%69%64%2C%20%74%69%74%6C%65%20%66%72%6F%6D%20%63%6F%6E%74%72%61%63%74"; Т.е. простой запрос на выборку всех договоров. При вызове метода Send возникает исключение. |
Автор: | Amir [ 19 июн 2012, 16:51 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
Пишут: Цитата: Для того чтобы 1С смогла работать с самоподписным сертификатом описание корневого сертификата надо добавить в файл cacert.pem (в каталоге программы \bin\cacert.pem). Описание можно сгенерировать с помощью бесплатной утилиты openssl.
|
Автор: | рукашы [ 19 июн 2012, 18:31 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
Amir писал(а): Пишут: Цитата: Для того чтобы 1С смогла работать с самоподписным сертификатом описание корневого сертификата надо добавить в файл cacert.pem (в каталоге программы \bin\cacert.pem). Описание можно сгенерировать с помощью бесплатной утилиты openssl. Сделал. Не помогло. Что неудивительно, в принципе. Это, как я понимаю, рецепт для работы с https через встроенную в 1С обертку для этого дела (есть там соответствующий класс). А я работаю через MSXML2.XMLHTTP (т.е. точно также, как из любого скриптового языка). Пробовал с разных компов запускать (предварительно установив самоподписанный сертификат как доверенный). Результат тот же... Разве что вместо кода ошибки возвращает её текстовое описание - "Ошибка загрузки указанного ресурса". Попробую это дело полностью на JavaScript переписать, чтобы исключить вопрос отношения 1С к этой проблеме... |
Автор: | рукашы [ 19 июн 2012, 19:58 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
В общем, 1С тут точно не причем. Написал простейший JScript из 4 строчек, ошибка та же самая: Код: Connect = new ActiveXObject("MSXML2.XMLHTTP");
Connect.Open("POST", "https://Сайт:8443/bgbilling/executer?",0); Connect.setRequestHeader("content-type", "application/x-www-form-urlencoded"); Connect.send("user=Логин&pswd=Пароль&module=sqleditor&action=SQLEditor&pageSize=100000&sql=%53%45%4C%45%43%54%20%69%64%2C%20%74%69%74%6C%65%20%66%72%6F%6D%20%63%6F%6E%74%72%61%63%74"); |
Автор: | рукашы [ 19 июн 2012, 19:59 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
Что еще можно попробовать, куда посмотреть? Руки опускаются ![]() |
Автор: | рукашы [ 19 июн 2012, 20:03 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
Сертификат - да, самоподписанный. Но он добавлен в список доверенных корневых и промежуточных центров сертификации (браузеры возвращают результат без вопросов). Может, для MSXML2.XMLHTTP еще нужно где-то его прописать? |
Автор: | рукашы [ 21 июн 2012, 19:32 ] |
Заголовок сообщения: | Re: Доступ к таблицам биллинга извне. Изменился протокол? |
Продолжение истории здесь: http://forum.bgbilling.ru/viewtopic.php?f=19&t=6885 Может, чем-то кому-то поможет. Спасибо всем, кто пытался помочь. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |