Имя: Пароль:
1C
1С v8
pony express - передача xml
0 klikot
 
03.09.13
10:45
Кто-нибудь делал интеграцию с пони? запнулся на передаче итогового xml.

В инструкции написано:
"Вот URL, по которому вы сможете передавать данные нашему WEB-сервису(POST запрос):
http://www.ponyexpress.ru/tools/im/order_request_std.html
временный(тестовый) - AccessCode - C08EB636-D67C-456E-8954-F38FB7193281"

Если зайти на эту страницу, скопировать xml и ввести accesscode всё ок. А вот программно не получается.

пробывал разными вариантами,но без толку.
вот один из вариантов:

HTTPОбъект = СоздатьОбъект("Microsoft.XMLHTTP");
HTTPОбъект.Open("POST", "http://www.ponyexpress.ru/tools/im/order_request_std.html";, 0);
HTTPОбъект.SetRequestHeader("AccessCode", "C08EB636-D67C-456E-8954-F38FB7193281");
HTTPОбъект.Send(ТекстXMLВСтроку);

Возвращает 200 статус, но ничего не грузится.

Может кто поможет?
1 klikot
 
03.09.13
10:46
неправильно вставился.url в запросе http://www.ponyexpress.ru/tools/im/order_request_std.html
2 klikot
 
03.09.13
10:58
Обязаны ли мне предоставить эту информцию сама пони-экспресс? Они отказываются, с ихними программистами поговрить невозможно. Только через менеджера.
Пример пост-запроса прислать не могут, ссылаясь на то, что это "относится к обучению программированию", хотя мне нужно всего несколько строк.
У меня закралось сомнение, что может все их клиенты копируют исходный xml на url вручную. Так ли это?
3 eRik
 
03.09.13
11:04
а инструхция где?
в которой написано, что "Вот URL, по которому вы сможете передавать..."
телепаты еще не вернулись из отпуска.

и что это тут за бред вместо нормального урла?
HTTPОбъект.Open("POST", "http://www.ponyexpress.ru/tools/im/order_request_std.html""; target="_blank" rel="nofollow" class="extralink">http://www.ponyexpress.ru/tools/im/order_request_std.html";;, 0);
4 klikot
 
03.09.13
11:05
да я же написал, это неправильно вставилось. адерес:http://www.ponyexpress.ru/tools/im/order_request_std.html
5 klikot
 
03.09.13
11:10
Вот еще кусочек другой инстркуции: :)

2. Получение данных о заказах

Данные о заказах отправляются через метод POST, на URL предоставляемый клиенту, через http, в следующем формате:

<?xml version="1.0" encoding="utf-8" ?>
        <order_list>
<order>
  <order_date>2011-09-20</order_date>
и т.д.
6 eRik
 
03.09.13
11:14
ну, формирование текста запроса, это дело твое.

зачем HTTPОбъект = СоздатьОбъект("Microsoft.XMLHTTP");
это принципиально?
есть же встроенные в 1с функции типа HTTPСоединение и ОтправитьДляОбработки (делает POST)
7 klikot
 
03.09.13
11:18
да нет, не принципиально. хотя с другой курьероской службой обмен идет через этот объект.кстати, это семерка.
8 klikot
 
03.09.13
11:21
менеджер пони писала, что они "еженедельно интегрируемся с несколькими клиентами, обычно они спрашивают AccessCode и всё, начинают отправки". Где Вы эти "нексколько клиентов"?! Отзовитесь!
9 eRik
 
03.09.13
11:31
а, семерка, смутило "v8" в названии темы.
так если ввести этот xml через ту форму, то ответ получается нормальный?
тогда почему бы не к ней и не обращаться? там только адрес другой, да acces_code не в заголовке.
10 klikot
 
03.09.13
11:41
с 8 косякнул.) да, ответ нормальный. возвращается xml с результатом, который я тоже хочу обработать.
так я к ней и обращаюсь.
11 klikot
 
03.09.13
11:43
"там только адрес другой" какой другой?
12 klikot
 
03.09.13
11:56
Не могу понять причины того почему сами пони могут написать куда и как им это засылать.
Неужели их клиенты в формочки руками копируют?
13 eRik
 
03.09.13
12:00
урл там http://www.ponyexpress.ru/tools/im/im_order_std.php
xml запихнуть в переменную "xml_data"
код доступа в "access_code"
обе эти переменные отправлять через POST.
14 eRik
 
03.09.13
12:01
т.е. если брать данные через эту форму, то код доступа должен быть не в заголовке, а в самом запросе вместе с xml
15 klikot
 
03.09.13
12:04
да, я так как раз и пробывал сделать пол часа назад. не помогает.
16 klikot
 
03.09.13
12:05
только урл этот единственный: http://www.ponyexpress.ru/tools/im/order_request_std.html
17 eRik
 
03.09.13
12:07
как не работает? с формы то работает.
может, конечно, они реферер еще проверяют.
можно образец запроса?
18 klikot
 
03.09.13
12:18
да запрос почти такой же как сверху
URL = "http://www.ponyexpress.ru/tools/im/order_request_std.html";;  Логин="";
HTTPОбъект = СоздатьОбъект("Microsoft.XMLHTTP");
HTTPОбъект.Open("POST", URL, 0);
//HTTPОбъект.SetRequestHeader("Content-Type", "application/atom+xml");
HTTPОбъект.SetRequestHeader("access_code", "C08EB636-D67C-456E-8954-F38FB7193287");
HTTPОбъект.SetRequestHeader("xml_data", ТекстXMLВСтроку);
//HTTPОбъект.SetRequestHeader("Authorization", "user=" + ЛогинIML.Код + "&password=" + ЛогинIML.Пароль);
        
//HTTPОбъект.Send(ТекстXMLВСтроку);
HTTPОбъект.Send();
19 klikot
 
03.09.13
12:18
опять url кривой, ну вобщем там http://www.ponyexpress.ru/tools/im/order_request_std.html
20 klikot
 
03.09.13
12:20
и на аксесс-код пофиг. Даже с неверным возвращает 200 статус.
21 eRik
 
03.09.13
12:21
да нет, я про ТекстXMLВСтроку
22 eRik
 
03.09.13
12:22
а сам запрос странный, если говорить мягко. по сути туда ничего не отправляется, т.к. xml по любому должен быть в теле а не в заголовке
23 eRik
 
03.09.13
12:23
это я про (18)
24 klikot
 
03.09.13
12:26
кстати да, перез выгрузкой готовый xml преобразуется в строку.
    СтримВход = СоздатьОбъект("ADODB.Stream");
    СтримВход.Type   = 2;
    СтримВход.Charset= "utf-8";
    СтримВход.Open();
    СтримВход.LoadFromFile(ИмяФайла);
    
    РазмерБлока = 255;
    Всего       = СтримВход.Size;
    ТекстXMLВСтроку ="";
    Пока СтримВход.EOS = 0 Цикл
        ТекстСтроки = СтримВход.ReadText(РазмерБлока);
        ТекстXMLВСтроку = ТекстXMLВСтроку + ТекстСтроки;
    КонецЦикла;      

попробую убрать
25 eRik
 
03.09.13
12:27
т.е. на вскидку д.б. так:

URL = "http://www.ponyexpress.ru/tools/im/im_order_std.php";;
HTTPОбъект = СоздатьОбъект("Microsoft.XMLHTTP");
HTTPОбъект.Open("POST", URL, 0);
HTTPОбъект.Send("access_code=C08EB636-D67C-456E-8954-F38FB7193287&xml_data=" + ТекстXMLВСтроку);
26 eRik
 
03.09.13
12:28