|
v7: Запрос на портал через HTMLXML | ☑ | ||
---|---|---|---|---|
0
maestro-72
19.04.18
✎
12:05
|
Поставщик прислал:
POST /distributor_document/ HTTP/1.1 Host: auto.russkart.com Cache-Control: no-cache Postman-Token: bd0839b6-c5c3-b804-aed5-0d943fe72735 Content-Type: multipart/form-data; boundary=-------------573cf973d5228 ---------------573cf973d5228 Content-Disposition: form-data; name="login" 488255ea401a70856fe4ccbbb9ab7155645abcfc ---------------573cf973d5228 Content-Disposition: form-data; name="pswd" iloverusskart ---------------573cf973d5228 Content-Disposition: form-data; name="xml" САМ XML строковой переменной ---------------573cf973d5228-- Я пытаюсь послать его следующим кодом: Стр = ЭкранСпецСимволовXML(Стр); Инфо = СоздатьОбъект("AddIn.V7SysInfo"); ГлобальноУникальныйИдентификатор = Инфо.СоздатьGUID(); Boundary = СтрЗаменить(Строка(ГлобальноУникальныйИдентификатор),"-",""); ТекстЗапроса = " |Host: auto.russkart.com |Cache-Control: no-cache |Postman-Token: bd0839b6-c5c3-b804-aed5-0d943fe72735 |Content-Type: multipart/form-data; boundary=-------------" + Boundary + " |-------------" + Boundary + " |Content-Disposition: form-data; name=""login"" |" + Login + " |-------------" + Boundary + " |Content-Disposition: form-data; name=""pswd"" |" + Password + " |-------------" + Boundary + " |Content-Disposition: form-data; name=""xml"" |" + Стр + " |-------------" + Boundary; x = CreateObject("Microsoft.XMLHTTP"); x.OPEN ("POST", url, 0); x.SetRequestHeader("Content-Type", "text/xml; charset=utf-8"); x.send(ТекстЗапроса); В ответ приходит ошибка - не передан логин. Не пойму в чем дело. Может кто нибудь направить на путь истинный. Может я чтото не так делаю... |
|||
1
BalBess
19.04.18
✎
12:34
|
Заголовки блока от "тела" блока должны отделяться пустой строкой
https://ru.wikipedia.org/wiki/Multipart/form-data т.е. нужно вставить РазделительСтрок() кое где |
|||
2
BalBess
19.04.18
✎
12:37
|
должно быть как вам выслал поставщик, а у вас нет
Можно сохранить куда-нибудь получившийся запрос и посмотреть |
|||
3
Djelf
19.04.18
✎
12:39
|
+при отправке в хидере нужно Boundary указывать
|
|||
4
BalBess
19.04.18
✎
12:55
|
(3) да, кстати, вы еще и Content-Type неправильно передаете - это вообще заголовок и должен быть не text/xml
что-то типа x.setrequestheader("Content-Type", "multipart/form-data; boundary=" + boundary); |
|||
5
BalBess
19.04.18
✎
12:58
|
и вообще запрос неправильный )
первые несколько строк - это заголовки (до Content-Disposition) |
|||
6
Kigo_Kigo
19.04.18
✎
13:08
|
Функция СоздатьXMLHttpRequest(URL,Метод = "GET")
Попытка XMLHttpRequest = СоздатьОбъект("Msxml2.XMLHTTP.6.0"); Исключение Попытка XMLHttpRequest = СоздатьОбъект("Msxml2.XMLHTTP.3.0"); Исключение Попытка XMLHttpRequest = СоздатьОбъект("Msxml2.XMLHTTP"); Исключение Попытка XMLHttpRequest = СоздатьОбъект("Microsoft.XMLHTTP"); Исключение Сообщить("Невозможно создать XMLHttpRequest. |" + ОписаниеОшибки(), "!"); КонецПопытки; КонецПопытки; КонецПопытки; КонецПопытки; XMLHttpRequest.open(Метод, URL, 0); Возврат XMLHttpRequest; КонецФункции |
|||
7
Kigo_Kigo
19.04.18
✎
13:08
|
Функция СоздатьGUID()
TypeLib = CreateObject("Scriptlet.TypeLib"); NewGUID = TypeLib.Guid(); TypeLib = ""; Возврат NewGUID; КонецФункции |
|||
8
Kigo_Kigo
19.04.18
✎
13:09
|
URL = "https://=======.com/v1/partner/company";
XMLHttpRequest = СоздатьXMLHttpRequest(URL); XMLHttpRequest.Open("GET", URL, 0); XMLHttpRequest.setRequestHeader("Accept", "application/json"); XMLHttpRequest.setRequestHeader("X-Api-Key", Токен); XMLHttpRequest.setRequestHeader("X-Origin-Request-Id", Строка(XOriginRequestId)); XMLHttpRequest.setRequestHeader("X-Timestamp", Строка(XTimestamp)); ТекстЗапроса = "https://=======.com/v1/partner/company"; XMLHttpRequest.send(ТекстЗапроса); //Текст = XMLHttpRequest.responseXml.xml; ТекстОтвета = СоздатьОбъект("Текст"); ТекстОтвета.открыть(КаталогИБ()+"txt2_"); ОтветОтСервера=СокрЛП(XMLHttpRequest.responseText); |
|||
9
Kigo_Kigo
19.04.18
✎
13:10
|
Далее сами
|
|||
10
BalBess
19.04.18
✎
13:19
|
(8) вообще не в тему
|
|||
11
Kigo_Kigo
19.04.18
✎
13:25
|
(10) Как это не в тему?
Создание реально рабочей компоненты, открытие урл, установка заголовка, формирование запроса, запрос, ответ, я из свое брал, а уж ТС пусть сам под себя интерпритирует |
|||
12
Kigo_Kigo
19.04.18
✎
13:28
|
(11) + если бы мне в свое время дали бы подобный код, я не убил бы 2 недели на его написание,собирая инфу по крупицам, причем я в вебе полный ноль
|
|||
13
BalBess
19.04.18
✎
13:50
|
(11) открытие урл, установка заголовка, формирование запроса, запрос, ответ - все это автор уже сделал, ответ уже получает. Вопрос был именно про сам запрос.
Че-то он потерялся, получилось наверное ) |
|||
14
maestro-72
19.04.18
✎
21:15
|
Не, просто комп отобрали :-). Сейчас пробовать буду. Кто откликнусля всем спасибо!
|
|||
15
kofeinik
19.04.18
✎
22:14
|
(0) Обмен дистрибьютора с рускартом под 7-ку делаешь?
|
|||
16
maestro-72
20.04.18
✎
11:16
|
(15) Да
Вот так это завелось, кому интересно будет: Стр = ДокXML.ПредставлениеXML; Стр = Заг + Симв(10) + Симв(13) + Стр; Инфо = СоздатьОбъект("AddIn.V7SysInfo"); ГлобальноУникальныйИдентификатор = Инфо.СоздатьGUID(); Boundary = СтрЗаменить(Строка(ГлобальноУникальныйИдентификатор),"-",""); ТекстЗапроса = ""; //Логин ТекстЗапроса = ТекстЗапроса + "--"+Boundary + РазделительСтрок; ТекстЗапроса = ТекстЗапроса + "Content-Disposition: form-data; name=""login""" + РазделительСтрок; ТекстЗапроса = ТекстЗапроса + РазделительСтрок; ТекстЗапроса = ТекстЗапроса + Login + РазделительСтрок; //Пароль ТекстЗапроса = ТекстЗапроса + "--"+Boundary + РазделительСтрок; ТекстЗапроса = ТекстЗапроса + "Content-Disposition: form-data; name=""pswd""" + РазделительСтрок; ТекстЗапроса = ТекстЗапроса + РазделительСтрок; ТекстЗапроса = ТекстЗапроса + Password + РазделительСтрок; //Данные ТекстЗапроса = ТекстЗапроса + "--"+Boundary + РазделительСтрок; ТекстЗапроса = ТекстЗапроса + "Content-Disposition: form-data; name=""xml""" + РазделительСтрок; ТекстЗапроса = ТекстЗапроса + РазделительСтрок; ТекстЗапроса = ТекстЗапроса + Стр + РазделительСтрок; //Закрываем ТекстЗапроса = ТекстЗапроса + "--" + Boundary + "--"; x = CreateObject("Microsoft.XMLHTTP"); x.OPEN ("POST", url, 0); x.SetRequestHeader("Host", "auto.russkart.com"); x.SetRequestHeader("Cache-Control", "no-cache"); x.SetRequestHeader("Postman-Token", "bd0839b6-c5c3-b804-aed5-0d943fe72735"); x.SetRequestHeader("Content-Type", "multipart/form-data; boundary=" + Boundary); x.send(ТекстЗапроса); |
|||
17
Kigo_Kigo
20.04.18
✎
11:43
|
Еще бы длл ку бы выложил
Инфо = СоздатьОбъект("AddIn.V7SysInfo") было бы прекрасно! |
|||
18
Salimbek
20.04.18
✎
12:05
|
(17) Это стандартная V7plus.dll
|
|||
19
Salimbek
20.04.18
✎
12:08
|
+(18) Еще в 1cpp.dll есть объект guid, можно оттуда использовать.
|
|||
20
maestro-72
20.04.18
✎
12:21
|
(17) Да, все правильно в (18) подсказали. Это стандартная библиотека 1с77.
|
|||
21
Kigo_Kigo
20.04.18
✎
15:09
|
Хнык хнык, она не работает с httpS, так что если сайт перейдет на httpS- ваш код перестанет работать
|
|||
22
maestro-72
21.04.18
✎
17:01
|
(21) Тогда займемся решением этой проблемы.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |