|
POST запрос из 1С | ☑ | ||
---|---|---|---|---|
0
loken2
25.02.15
✎
21:04
|
Подскажите как это сделать через пост запрос:
<?php $data = array( 'login' => 'client1', // логин (обязательное поле) 'token' => 'hash.token', // код авторизации (обязательное поле) 'comments_client' => 'comment к накл', //комментарий к накладной 'punkt_id' => 'Moskovskaya-A16', // идентификатор ПВ (Moskovskaya-A16, Pionerskaya-K15k2) 'orders' => array( // Заказ N2047 стоимостью 123р array( 'sku' => '2047', //номер заказа (обязательное поле) 'price' => 123, //сумма к оплате клиентом (обязательное поле) 'buyer_phone' => '123-34-45', //тел. клиента 'buyer_fio' => 'Владимир Петров', //имя клиента 'comment' => 'comment1' //коммент к заказу ), array( 'sku' => '2049', 'price' => 1234, 'payed' => 1, //признак, что заказ предоплачен 'buyer_phone' => '123-56-89', 'buyer_delivery_needed' => 1, // нужна доставка 'buyer_address' => 'адрес', // адрес доставки 'buyer_delivery_time' => 'пожелания к дате/времени доставки', // пожелания к дате/времени доставки 'comment' => 'comment1' //коммент к заказу ), ) ); $post_body = http_build_query($data); echo $post_body; |
|||
1
loken2
25.02.15
✎
21:05
|
как передать параметры которые являются массивом?
|
|||
2
DrZombi
гуру
25.02.15
✎
21:07
|
Через XML
|
|||
3
loken2
25.02.15
✎
21:09
|
пример кода можно?
|
|||
4
PR
25.02.15
✎
21:11
|
||||
5
DirecTwiX
25.02.15
✎
21:13
|
Так посмотреть, как работает функция http_build_query() и оттуда уже плясать.
Пример #3. Пример использования http_build_query() с многомерными массивами... http://php.net/manual/ru/function.http-build-query.php |
|||
6
loken2
25.02.15
✎
21:40
|
так из 1С это как передать? )
|
|||
7
PR
25.02.15
✎
21:45
|
(6) А что, у тебя пост 27 в Отправка POST запроса к 1С враги вырезали?
|
|||
8
loken2
25.02.15
✎
22:04
|
похоже долго разбираться придется, нужно до Пн сделать, есть желающие помочь? по стоимости пишите в ICQ.
|
|||
9
PR
25.02.15
✎
22:11
|
(8) Фига се поворот событий.
|
|||
10
loken2
25.02.15
✎
22:16
|
просто нет у меня сейчас времени разбираться, сможешь помочь?
|
|||
11
PR
25.02.15
✎
23:37
|
(10) Хм. Ну хоккей. Давай попробуем. Стучись в скайп или напиши на почту.
|
|||
12
loken2
26.02.15
✎
06:41
|
если это простой параметр, то можно сделать так:
WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.Option(2,"utf-8"); WinHttp.Open("POST","http://public.services.dellin.ru/tracker/XML/",0); WinHttp.SetRequestHeader("Accept-Language", "ru"); WinHttp.SetRequestHeader("Accept-Charset","utf-8"); WinHttp.setRequestHeader("Content-Language", "ru"); WinHttp.setRequestHeader("Content-Charset", "utf-8"); WinHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8"); ПараметрыПОСТ = "rwID=" + СокрЛП(НомерНакладной); WinHttp.Send(ПараметрыПОСТ); ТекстОтвета = WinHttp.ResponseText(); |
|||
13
loken2
26.02.15
✎
06:42
|
а если параметр массив?
|
|||
14
magicSan
26.02.15
✎
06:47
|
в пхп массив это строка
|
|||
15
loken2
26.02.15
✎
07:05
|
как передать блок "orders" - там массив из нескольких документов должен быть, как разделить разные документы?
|
|||
16
loken2
26.02.15
✎
07:26
|
как выглядит тело POST запроса:
login=client1&token=hash.token&comments_client=comment+%D0%BA+%D0%BD%D0%B0%D0%BA%D0%BB&punkt_id=Moskovskaya-A16&orders%5B0%5D%5Bsku%5D=2047&orders%5B0%5D%5Bprice%5D=123&orders%5B0%5D%5Bbuyer_phone%5D=123-34-45&orders%5B0%5D%5Bbuyer_fio%5D=%D0%92%D0%BB%D0%B0%D0%B4%D0%B8%D0%BC%D0%B8%D1%80+%D0%9F%D0%B5%D1%82%D1%80%D0%BE%D0%B2&orders%5B0%5D%5Bcomment%5D=comment1&orders%5B1%5D%5Bsku%5D=2049&orders%5B1%5D%5Bprice%5D=1234&orders%5B1%5D%5Bpayed%5D=1&orders%5B1%5D%5Bbuyer_phone%5D=123-56-89&orders%5B1%5D%5Bbuyer_delivery_needed%5D=1&orders%5B1%5D%5Bbuyer_address%5D=%D0%B0%D0%B4%D1%80%D0%B5%D1%81&orders%5B1%5D%5Bbuyer_delivery_time%5D=%D0%BF%D0%BE%D0%B6%D0%B5%D0%BB%D0%B0%D0%BD%D0%B8%D1%8F+%D0%BA+%D0%B4%D0%B0%D1%82%D0%B5%2F%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8+%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BA%D0%B8&orders%5B1%5D%5Bcomment%5D=comment1 |
|||
17
loken2
26.02.15
✎
07:59
|
если смотреть пример как должно выглядеть тело запроса, все заказы идут одной строкой
&orders%5B0%5D%5Bprice%5D=123 вопрос что это "%5B0%5D%5B" между orders и price для одного заказа оно одинаково, т.е. все заказы идут в строку с каким то разделителем между их параметрами |
|||
18
Мигрень
26.02.15
✎
10:19
|
Боюсь, что параметр типа массив передать невозможно. Даже через XML, даже через SOAP. Во всяком случае два дня гугленья и изучение примеров на ИТС результата не дали. Остался одиноко висеть и мой вопрос на Мисте..
Создание Заказа покупателя через веб-сервис |
|||
19
loken2
26.02.15
✎
11:16
|
структра через XML передается без проблем, у параметра вложенные параметры со своими значениями, так я уже делал обмен заказами с DPD, но тут немного по другому ...
|
|||
20
Новиков
26.02.15
✎
11:16
|
(17) >> вопрос что это "%5B0%5D%5B" между orders и price для одного заказа оно одинаково
Мде. В (12) ты сам установил: >>WinHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8"); А теперь так девственно. А "что это" (с). Ну ладно. Переведу за тебя. Для всех твоих параметров, ты устанавливаешь тип x-www-form-urlencoded, при этом кодируешь их в кодировке utf-8. А т.к. у тебя массив, то сюрприз, надо ж как-то определить порядковый номер элемента массива. Как? --> "что это" (с). |
|||
21
loken2
26.02.15
✎
11:19
|
(20) это не я, это был однин из примеров из инета )
|
|||
22
loken2
26.02.15
✎
11:19
|
я нев веб программист для меня это темный лес )
|
|||
23
loken2
26.02.15
✎
11:21
|
(20) так как правильно передать здесь элементы массива?
|
|||
24
Новиков
26.02.15
✎
11:38
|
(23) Создаешь обычный файл. Кодируешь строчку параметров ручками. Затем набираешь в синтакст-помошнике HTTPСоединение и долго и нудно читаешь пример по методу ОтправитьДляОбработки. Потом не забудь написать о результатах. Потомки, нагуглившие это поклонются тебе :)
|
|||
25
loken2
26.02.15
✎
11:58
|
(24) >Затем набираешь в синтакст-помошнике HTTPСоединение и долго и нудно читаешь пример по методу ОтправитьДляОбработки
да знаю я про это, вопрос был в том как правильно параметры массива передать |
|||
26
Новиков
26.02.15
✎
12:07
|
(25) я надеюсь, я ответил как и ты понял ответ. Не так ли? :) Нет больше вопроса "а что это?" (с) Или есть? :)))
|
|||
27
loken2
26.02.15
✎
12:14
|
(26) только не считай себя умником, так другие знают то о чем ты даже представления не имеешь))), я же сказал веб не моя область
|
|||
28
Новиков
26.02.15
✎
12:26
|
(27) кстати, отлично поблагодарил за единственный дельный совет в ветке. Пожалуйста, если что.
|
|||
29
loken2
26.02.15
✎
12:31
|
(28) за совет спасибо, но не зазнавайся ), но я как раз нехотел все кодировать ручками поэтому и возникла тема как передавть параметры массива, все остальное было и так ясно примеров полно.
|
|||
30
Zyka
26.02.15
✎
12:49
|
Хех...
ФайлОтправки = Новый ЗаписьТекста(ИмяФайлаОтправки); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("content-disposition: form-data; name=""login""" + Символы.ВК + Символы.ПС); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("content-disposition: form-data; name=""login""" + Символы.ВК + Символы.ПС); ФайлОтправки.ЗаписатьСтроку(login); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("content-disposition: form-data; name=""token""" + Символы.ВК + Символы.ПС); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("content-disposition: form-data; name=""token""" + Символы.ВК + Символы.ПС); ФайлОтправки.ЗаписатьСтроку(token); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("content-disposition: form-data; name=""comments_client""" + Символы.ВК + Символы.ПС); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("content-disposition: form-data; name=""comments_client""" + Символы.ВК + Символы.ПС); ФайлОтправки.ЗаписатьСтроку(comments_client); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("content-disposition: form-data; name=""punkt_id""" + Символы.ВК + Символы.ПС); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("content-disposition: form-data; name=""punkt_id""" + Символы.ВК + Символы.ПС); ФайлОтправки.ЗаписатьСтроку(punkt_id); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("content-disposition: form-data; name=""orders[" + Строка(Индекс) + "][sku]""" + Символы.ВК + Символы.ПС); ФайлОтправки.ЗаписатьСтроку(Формат(Заказ.Номер, "ЧЦ=11")); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("content-disposition: form-data; name=""orders[" + Строка(Индекс) + "][price]""" + Символы.ВК + Символы.ПС); ФайлОтправки.ЗаписатьСтроку(Формат(Заказ.Оплата, "ЧРД=.; ЧН=0; ЧГ=0")); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("content-disposition: form-data; name=""orders[" + Строка(Индекс) + "][payed]""" + Символы.ВК + Символы.ПС); ФайлОтправки.ЗаписатьСтроку(Формат(Заказ.Предоплачен, "БЛ=0; БИ=1")); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("content-disposition: form-data; name=""orders[" + Строка(Индекс) + "][buyer_phone]""" + Символы.ВК + Символы.ПС); ФайлОтправки.ЗаписатьСтроку(Заказ.Телефон); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("content-disposition: form-data; name=""orders[" + Строка(Индекс) + "][buyer_fio]""" + Символы.ВК + Символы.ПС); ФайлОтправки.ЗаписатьСтроку(Заказ.КонтактноеЛицо); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.ЗаписатьСтроку("content-disposition: form-data; name=""orders[" + Строка(Индекс) + "][comment]""" + Символы.ВК + Символы.ПС); ФайлОтправки.ЗаписатьСтроку(Заказ.ДополнительнаяИнформация); ФайлОтправки.ЗаписатьСтроку("--My1cV8bNdr"); ФайлОтправки.Закрыть(); ЗаголовокHTTP = Новый Соответствие(); ЗаголовокHTTP.Вставить("Content-Type", "multipart/form-data; boundary=My1cV8bNdr"); ИмяФайлаОтвета = ПолучитьИмяВременногоФайла(); Попытка Соединение.ОтправитьДляОбработки(ИмяФайлаОтправки, HTTPАдресСкрипта, ИмяФайлаОтвета, ЗаголовокHTTP); Исключение Сообщить("Не удалось получить данные с сервера.Проверьте правильность адреса сервера," + Символы.ПС + "а также настройки подключения к Интернет."); Возврат; КонецПопытки; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |