|
v7: 1с 7.7 отправить файл json с помощью post-запроса | ☑ | ||
---|---|---|---|---|
0
tgu82
26.07.18
✎
14:40
|
1с 7.7 отправить файл json с помощью post-запроса
Сразу говорю читал что имеется на эту тему Но ощущаю себя обезьяной с гранатой. Хотелось бы малость понять как передать пароль, логин, имя сайта и имя файла через winhttp Даже когда-то что-то пробовал (winhttp) Задача не шкурная, поставщик требует эти данные. В-принципе можем и оплатить если в разумных пределах. Если нарушаю правила форума то по незнанию. |
|||
1
tgu82
26.07.18
✎
14:46
|
(0)
cat data.json | curl -is --user your_api_login:your_password -d @- https://www.***.ru/api/json/ Можно и через CURL только непонятно как передать имя файла. CAT - это что? Я так понял что это для линукса программа но может и ошибаюсь ибо пока совсем не копенгаген в этих делах :) |
|||
2
novichok79
26.07.18
✎
14:52
|
а в чем сложность? раз уже через winhttp работали?
|
|||
3
tgu82
26.07.18
✎
14:59
|
(2) Не работал а что-то пробовал может случайно что-то и получалось когда-то, но в практике не надо было а теперь надо хоть как отправлять json-файл, ну его я уж как-нибудь по данным ТИС сформирую. А вот с отправкой большой напряг. Посоветуйте чеи проще все это сделать? Мне вот curl нравится, но как в ее параметры добавить указание о том что надо файл json передать и указать имя файла?
Ну есть код какой-то с winhttp только мне он малопонятен все-таки, а придется пользоваться этой штукой постоянно |
|||
4
Kigo_Kigo
26.07.18
✎
15:07
|
Функция Создать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; КонецФункции XOriginRequestId = Строка(СоздатьGUID()); URL = "https://wwwwwwww.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://wwwwwwwww.com/v1/partner/company"; XMLHttpRequest.send(ТекстЗапроса); //Текст = XMLHttpRequest.responseXml.xml; ТекстОтвета = СоздатьОбъект("Текст"); ТекстОтвета.открыть(КаталогИБ()+"txt2_"); ОтветОтСервера = СокрЛП(XMLHttpRequest.responseText); |
|||
5
NikVars
26.07.18
✎
15:09
|
||||
6
tgu82
26.07.18
✎
15:13
|
(5) Спасибо, читал я это но логика плохо мне очевидна
Зачем-то надо еще GET-запрос посылать А зачем? |
|||
7
Kigo_Kigo
26.07.18
✎
15:14
|
ТекстЗапроса = url+Отправить; //Отправить это строка json
URL = ТекстЗапроса; XMLHttpRequest = СоздатьXMLHttpRequest(URL,"POST"); XMLHttpRequest.setRequestHeader("Accept", "application/json"); XMLHttpRequest.setRequestHeader("X-Api-Key", Токен); XMLHttpRequest.setRequestHeader("X-Origin-Request-Id", Строка(XOriginRequestId)); XMLHttpRequest.setRequestHeader("X-Timestamp", Строка(XTimestamp)); XMLHttpRequest.send(ТекстЗапроса); //ОтветОтСервера = СокрЛП(XMLHttpRequest.responseText); ТекстОтвета = СоздатьОбъект("Текст"); ТекстОтвета.открыть(КаталогИБ()+"txt2_"); ОтветОтСервера = СокрЛП(XMLHttpRequest.responseText); ТекстОтвета . ДобавитьСтроку(ОтветОтСервера); ИЗСтрокиСЗ = СоздатьОбъект("СписокЗначений"); ТекстОтвета1 = СтрЗаменить(ОтветОтСервера,":",","); ТекстОтвета1 = СтрЗаменить(ТекстОтвета1,"{",""); ТекстОтвета1 = СтрЗаменить(ТекстОтвета1,"}",""); ИЗСтрокиСЗ.ИзСтрокиСРазделителями(ТекстОтвета1); Если ИЗСтрокиСЗ.ПолучитьЗначение(1) = "errorCode" Тогда Предупреждение(СокрЛП(ИЗСтрокиСЗ.ПолучитьЗначение(4))); //Возврат СокрЛП(ИЗСтрокиСЗ.ПолучитьЗначение(4)) ; КонецЕсли; |
|||
8
tgu82
26.07.18
✎
15:15
|
(4) А мне же Post-запрос нужен.
И не вижу я как логин и пароль передать |
|||
9
Kigo_Kigo
26.07.18
✎
15:16
|
(8) Get это запросить данные с ервера, пост - отправить, логин и пароль укладиваются как и токен в моем примере
|
|||
10
Kigo_Kigo
26.07.18
✎
15:18
|
по идее
XMLHttpRequest.setRequestHeader("Login", логин); XMLHttpRequest.setRequestHeader("Password", Пароль); |
|||
11
tgu82
26.07.18
✎
15:19
|
(9) Это понятно спасибо, но насчет логин и пароль не понял
ПТекстЗапроса = url+Отправить; //Отправить это строка json Строка json или файл json (типа \\оффис\проба.json) ? |
|||
12
tgu82
26.07.18
✎
15:22
|
(10) Вот как раз Да. Поймет ли сайт setRequestHeader("Login", логин)? Это в API сайта как-то должно быть указано?
|
|||
13
NSSerg
26.07.18
✎
15:25
|
WinHttp.SetCredentials(Логин,Пароль,0)
|
|||
14
Kigo_Kigo
26.07.18
✎
15:26
|
(11) я ее формирую как строку в 1с-ке, по шаблону, который дал сайт
(12) должно быть указано, куда совать логин и пароль, но почти уверен что в шапку |
|||
15
tgu82
26.07.18
✎
15:27
|
(13) winhttp - это
WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1") ? |
|||
16
NSSerg
26.07.18
✎
15:30
|
WinHttp=СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
WinHttp.Open("POST", URL, 0, Логин, Пароль); WinHttp.SetCredentials(Логин, Пароль, 0); WinHttp.Send(POST_STRING); (15) Конечно да. |
|||
17
tgu82
26.07.18
✎
15:34
|
(16) Спасибо. А из чего состоит post_string?
Какой у нее формат должен быть? И где здесь передача файла json? |
|||
18
NSSerg
26.07.18
✎
15:36
|
(17) Это и есть содержимое твоего JSON.
|
|||
19
trad
26.07.18
✎
15:38
|
(17) post_string в твоем случае и есть строка в формате json
|
|||
20
tgu82
26.07.18
✎
15:38
|
(18) То есть это получается длиннющая строка?
|
|||
21
trad
26.07.18
✎
15:40
|
вариант передачи файла через поток:
Данные = СоздатьОбъект("ADODB.Stream"); Данные.open(); Данные.loadFromFile(ПутьКФайлу); Запрос = СоздатьОбъект("Msxml2.ServerXMLHTTP"); Запрос.open("POST", url, 0, Логин, Пароль); Запрос.setRequestHeader("Content-Type", "application/json"); //прочие заголовки Запрос.send(Данные); Если Запрос.status = 200 Тогда Ответ = Запрос.responseStream; Ответ.saveToFile(ПутьКФайлуОтвета); Иначе ТекстОшибки = "Ошибка: " + Запрос.status + " : " + Запрос.statusText; Сообщить(ТекстОшибки); КонецЕсли; Данные.close(); |
|||
22
tgu82
26.07.18
✎
15:40
|
(18,20) А просто имя файла как-то нельзя передать в параметры post-запроса чтоб сайт сообразил что это и есть нужный ему файл?
|
|||
23
NSSerg
26.07.18
✎
15:41
|
(22) Нет. А зачем?
|
|||
24
tgu82
26.07.18
✎
15:43
|
(23) ну вот как с помощью curl:
cat data.json | curl -is --user your_api_login:your_password -d @- https://www.***.ru/api/json/ Вот как все было бы замечательно если б я мог прям через командную строку и запускать Это! Но CAT в винде как я понял - нет |
|||
25
NSSerg
26.07.18
✎
15:44
|
(24) У тебя проблема прочитать файл в строку?
|
|||
26
NSSerg
26.07.18
✎
15:46
|
(24) В (21) Написано как это сделать
Данные = СоздатьОбъект("ADODB.Stream"); Данные.open(); Данные.loadFromFile(ПутьКФайлу); |
|||
27
tgu82
26.07.18
✎
15:46
|
(25) В одну Строку прочитать?
Вот сам файл (кусочек его): Пример отправляемых данных (sellout-data.json) { "sales": [ { "date": "2018-03-14", "store": "Филиал 1", "items": [ { "sku": "LLBA0-3923-2-08-K01", "count": "10" }, { "sku": "PC01-4512-05M", "count": "20" } ] }, { "date": "2018-03-14", "store": "Филиал 2", "items": [ { "sku": "MAD10-2-010-C-100", "count": "100" }, { "sku": "TFS-D3", "count": "1" } ] }, { "date": "2018-03-15", "store": "Филиал 2", "items": [ { "sku": "YDN10-00100", "count": "100" }, { "sku": "TFS-D3", "count": "2" } ] } ] } Пример отправки Sellout (данные в файле sellout-data.json): cat sellout-data.json | curl -is --user your_api_login:your_password -d @- https://www.iek.ru/api/sellout/json/ |
|||
28
Garykom
гуру
26.07.18
✎
15:48
|
Разговор глухонемого со слепым ))
|
|||
29
tgu82
26.07.18
✎
15:49
|
(26) Спасибо. Кажется дошло. просто получается что для Данные.LoadFromFile(путь) не играет роли что за содержимое файла. Это уже программа на сайте должна сообразить что это файл джейсон
|
|||
30
NSSerg
26.07.18
✎
15:50
|
(27) Я честно говоря не понимаю, чем строка в (27) Тебя не устраивает. Это такая-же строка как и любая другая.
|
|||
31
Garykom
гуру
26.07.18
✎
15:50
|
(27) Что ты пристал с этим своим "cat sellout-data.json | curl -is ..." ?
cat - это просто чтение из файла и вывод в консоль с целью затолкать из консоли в curl |
|||
32
tgu82
26.07.18
✎
15:50
|
(28) Да нет - разговор глухонемого еле видящего с говорящими и зоркими ))
|
|||
33
NSSerg
26.07.18
✎
15:51
|
(29) Ты передаешь с помощью POST не файл, а строку!
В данном случае это строка в формате JSON, и сейчас она у тебя лежит в файле. |
|||
34
tgu82
26.07.18
✎
15:51
|
(33) А вот теперь дошло наконец-то )))
|
|||
35
Garykom
гуру
26.07.18
✎
15:58
|
WinHttp=СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
WinHttp.Open("POST", URL, 0, Логин, Пароль); WinHttp.SetCredentials(Логин, Пароль, 0); POST_STRING = "читаем содержимое из файла sellout-data.json"; WinHttp.Send(POST_STRING); |
|||
36
tgu82
26.07.18
✎
15:58
|
(34)+ Теперь попробую, по результатам отпишусь
Всем огромное спасибо. Я уже если и с гранатой то с ручной ))) |
|||
37
tgu82
26.07.18
✎
16:18
|
(21) Вот ошибку дает:
Запрос.send(Данные); {H:\TORG\EXTFORMS\ПОСТЗАПРОСДЖЕЙСОН.ERT(15)}: msxml3.dll: Получено непредвиденное сообщение или оно имеет неправильный формат. Данные = СоздатьОбъект("ADODB.Stream"); Данные.open(); Данные.loadFromFile(ПутьКФайлу); Запрос = СоздатьОбъект("Msxml2.ServerXMLHTTP"); Запрос.open("POST", url, 0, Логин, Пароль); Запрос.setRequestHeader("Content-Type", "application/json"); //прочие заголовки Запрос.send(Данные); |
|||
38
tgu82
26.07.18
✎
16:22
|
(35) WinHttp.Send(POST_STRING);
{H:\TORG\EXTFORMS\ПОСТЗАПРОСДЖЕЙСОН.ERT(35)}: WinHttp.WinHttpRequest: Получено непредвиденное сообщение или оно имеет неправильный формат. И тут ошибка. Видимо строку ей надо в специальном формате передавать хотя и так пробовал и этак. Хотел просто тупо строку передать: POST_STRING = "читаем содержимое из файла sellout-data.json"; WinHttp.Send(POST_STRING); Не хочет однако |
|||
39
trad
26.07.18
✎
16:26
|
(35) у способа с передачей строки есть один небольшой недостаток. Если строка довольно большая, скажем в пару Мб (могу ошибаться), то семерка свалится при передаче ее в com
|
|||
40
trad
26.07.18
✎
16:27
|
(38) на кодировку файла обрати внимание
|
|||
41
tgu82
26.07.18
✎
16:31
|
(40) Как указать кодировку или сохранить в какой-то кодировке надо?
|
|||
42
tgu82
26.07.18
✎
16:37
|
WinHttp.SetRequestHeader("Accept-Language", "ru");// думаю что "ru"...
WinHttp.SetRequestHeader("Accept-Charset", "utf-8"); WinHttp.SetRequestHeader("Content-Language", "ru"); WinHttp.SetRequestHeader("Content-Charset", "utf-8"); Все равно ошибку дает зараза WinHttp.Send(POST_STRING); {H:\TORG\EXTFORMS\ПОСТЗАПРОСДЖЕЙСОН.ERT(43)}: WinHttp.WinHttpRequest: Получено непредвиденное сообщение или оно имеет неправильный формат. |
|||
43
trad
26.07.18
✎
16:38
|
(41) в какой кодировке надо, надо узнать у http://www.***.ru/api
|
|||
44
Djelf
26.07.18
✎
16:40
|
(42) А там случаем требуется не multipart/form-data?
Тогда текст запроса нужно по другому готовить. |
|||
45
tgu82
26.07.18
✎
16:40
|
(44) Не знаю. Завтра спрошу. А чем изменится запрос?
|
|||
46
Djelf
26.07.18
✎
16:46
|
(45) Вот так он меняется
Попробуй сначала через curl послать свой текст. У curl значительно лучше отладочные сообщения. Тыкать WinHttp без примера кода отправки можно долго... |
|||
47
tgu82
26.07.18
✎
16:48
|
(46) Ну да. А как через curl передать строку?
Логин пароль вижу как? Сайт вижу, а строку как? Какой ключ нужен? |
|||
48
Djelf
26.07.18
✎
16:51
|
(47) Просто имя файла в конце строки.
|
|||
49
NSSerg
26.07.18
✎
16:53
|
||||
50
NSSerg
26.07.18
✎
16:56
|
||||
51
tgu82
26.07.18
✎
16:57
|
Не могу скачать готовый CURL скачивается она с кучей папок. И где исполняемый файл - непонятно
|
|||
52
Djelf
26.07.18
✎
16:59
|
||||
53
MadDAD
26.07.18
✎
17:00
|
(47) замени CAT на TYPE смысл тот же.
|
|||
54
Necessitudo
26.07.18
✎
17:10
|
Не факт что там Basic авторизация)
|
|||
55
trad
26.07.18
✎
17:10
|
(52) я бы так линконул https://winampplugins.co.uk/curl/curl_7_53_1_openssl_nghttp2_x86.7z
) |
|||
56
Владимир1С
26.07.18
✎
17:20
|
(51) Работающий пример нужен?
|
|||
57
tgu82
26.07.18
✎
17:23
|
(56) Если не жалко - скинь пожалуйста.
а то поставщик поедом ест уже. надо выдать не гора уголек ))) |
|||
58
tgu82
26.07.18
✎
17:25
|
сПАСИБО. Готовый curl скачал. Запускается однако )))
|
|||
59
Владимир1С
26.07.18
✎
17:31
|
(57) Что за поставщик? не пони экспресс случаем?
|
|||
60
Владимир1С
26.07.18
✎
17:36
|
(58) Поймал?
|
|||
61
tgu82
26.07.18
✎
17:52
|
(59,60) Да спасибо. Нет не он.
Да это не играет роли вообще. Вот почему не работает никак ??? curl -is --user Логин:Пароль @- https://www.***.ru/api/sellout/json/ в командной среде (win xp) Никакого ответа - может она вообще не запустилась = хрен поймешь |
|||
62
Владимир1С
26.07.18
✎
17:54
|
(61) Пусть пришлют строку подключения по http, яснее будет, куда копать
|
|||
63
Владимир1С
26.07.18
✎
17:57
|
(61) Старт - загнать заказ ...
|
|||
64
Djelf
26.07.18
✎
18:00
|
(61) Включи отладку https://ec.haxx.se/usingcurl-verbose.html
|
|||
65
Garykom
гуру
26.07.18
✎
18:12
|
(61) Объясни откуда (из какой Ж) ты взял это "-is" ?
|
|||
66
Fram
26.07.18
✎
18:13
|
(38) я так понимаю из winxp отправляешь?
попробуй из более свежей винды |
|||
67
Fram
26.07.18
✎
18:19
|
(66)+ возможно, вот это поможет https://support.microsoft.com/en-us/help/968730/windows-server-2003-and-windows-xp-clients-cannot-obtain-certificates
|
|||
68
Djelf
26.07.18
✎
18:27
|
(65) А что, да... нормально.
-i Include protocol headers in the output -s Silent mode. Don't output anything (61) И почему ничего не показывает? |
|||
69
Garykom
гуру
26.07.18
✎
18:49
|
(68) Ну так убрать -s будет показывать ошибки
|
|||
70
Garykom
гуру
26.07.18
✎
18:51
|
У разработчика cURL интересные завихрения, сам себя обрезал на длинные ключи разрешив короткие составные из однобуквенных.
"curl -i -s" - намного понятнее и можно было бы "curl -is" использовать для чего другого. |
|||
71
Djelf
26.07.18
✎
19:01
|
(70) Да ты что? Какие завихрения? Это ж unix-way.
И нельзя было бы -is использовать для чего то другого. Составной через один "-" но ключи односимвольные. Многосимвольные ключи через два "-". И вообще я на curl ВК`шку для 7.7 собрал, а то под wine ssl в mshttp не робит ;) Шикарная штука, этот curl. Все умеет, зараза такая... |
|||
72
Garykom
гуру
26.07.18
✎
19:06
|
(71) Не проще .Net использовать через ВК от Serginio1 ?
|
|||
73
Garykom
гуру
26.07.18
✎
19:07
|
(72)+ Обычно разрабы API дают готовые примеры под C# их только в ВК засунуть и все.
|
|||
74
Djelf
26.07.18
✎
19:07
|
(72) Под wine? оО
|
|||
75
Garykom
гуру
26.07.18
✎
19:08
|
(74) До 3.5 работает идеально под Wine с 4.5 есть некоторые легкие траблы.
|
|||
76
Garykom
гуру
26.07.18
✎
19:10
|
(71) Кстати под wine какую сборку 1С 77 юзаем? В каком режиме в файловом или еще как?
|
|||
77
Djelf
26.07.18
✎
19:24
|
(76) Последнюю 27ю.
Вначале был гибрид с mssql, но dbf значительно быстрее. Под w@e как то очень ставится ни с# ни mono, старовата она. Но что хорошо работает, то - не трожь. Из популярных ВК почти все нормально работают: http://catalog.mista.ru/public/19489/ База 6 гигов, автопроведение ночью, 0.4с на документ в среднем. selta тоже пробовал (транслятор mssql->pgsql), не сильно плохо, но dbf все равно быстрее ;) |
|||
78
tgu82
26.07.18
✎
19:40
|
(71) Почему не работает? Обычные ключи и среда CMD в которой
Curl запускается. |
|||
79
Djelf
26.07.18
✎
19:45
|
(78) Ты ключем -s подавил все сообщения curl.
Убери его и добавь вместо него v. |
|||
80
tgu82
26.07.18
✎
19:58
|
(79) Спасибо
|
|||
81
tgu82
26.07.18
✎
21:26
|
(79) не помогло, висит в непонятке, ctrl+c нажал и опять запустил
curl -iv --user 111111:pppppppp -d @- https://www.kvak.ru/api/sellout/json/ а логин и пароль в кавычках надо ? |
|||
82
Fram
26.07.18
✎
22:02
|
(81) ты (66),(67) пробовал?
|
|||
83
tgu82
27.07.18
✎
09:05
|
(82) Мне бы хоть понять что winhttp работает. То есть какой-то упрощенный что-ли запрос (может get-запрос)
Я когда-то пробовал сайт яндекса запрашивать, чего-то там в ответ пришло. На этом же компе кстати пробовал. А сейчас как-то все забылось - давно это было уже. |
|||
84
tgu82
27.07.18
✎
09:23
|
Вот код который почему-то работает как-то
Дает такой ответ: 200 OK Функция ПолучитьДатуЧисло(Год,Месяц,День,Часы,Минуты,Секунды) //Сообщить(Дата(Год,Месяц,День)-'01.01.1970'); Возврат (Дата(Год,Месяц,День)-'01.01.1970')*24*60*60+(Часы-3)*60*60+Минуты*60+Секунды; КонецФункции //Функция ОтправитьЗапросПост(СекретныйКлюч,прИмяФайла)//Имя файла - "d:\1cv77bd\Temp\test.json" Функция ОтправитьЗапросПост() Перем Год,Месяц,День,Часы,Минуты,Секунды; Год=ДатаГод(ТекущаяДата()); Месяц=ДатаМесяц(ТекущаяДата()); День=ДатаЧисло(ТекущаяДата()); А=ТекущееВремя(Часы,Минуты,Секунды); ЮниксВремя=ПолучитьДатуЧисло(Год,Месяц,День,Часы,Минуты,Секунды); //лпСайт="https://eway-test.elevel.ru/api/v2/images/select/"; лпСайт="https://eway-test.elevel.ru/api/v2/products/select"; СтрокаПараметров=""; СтрокаПараметров=СтрокаПараметров+"qr={""contract_id"":***,"; //СтрокаПараметров=СтрокаПараметров+"""hash"":"+ЮниксВремя),"; СтрокаПараметров=СтрокаПараметров+"""time"":"+ЮниксВремя+","; СтрокаПараметров=СтрокаПараметров+"""user_id"":****}"; Сообщить(СтрокаПараметров); // +"0d9f086c3d468d79829204f913b69b6a904deda6"+"/INVOICE_DATA";//"https" должно быть, я так считаю // // oADOStream = СоздатьОбъект("ADODB.Stream"); // oADOStream.Type = 1; //Binary // oADOStream.Open(); // oADOStream.LoadFromFile(прИмяФайла); WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.Option(2,"utf-8"); //Отключаем проверку сертификата Скрипт= СоздатьОбъект("MSScriptControl.ScriptControl"); Скрипт.language="javascript"; Скрипт.AddObject("WinHttp",WinHttp); Скрипт.Eval("WinHttp.Option(4)=13056");//intSslErrorIgnoreFlags Скрипт.Eval("WinHttp.Option(6)=true");//blnEnableRedirects Скрипт.Eval("WinHttp.Option(12)=true");//blnEnableHttpsToHttpRedirects //Сам запрос WinHttp.Open("POST", лпСайт,0); WinHttp.SetRequestHeader("Accept-Language", "ru");// думаю что "ru"... WinHttp.SetRequestHeader("Accept-Charset", "utf-8"); WinHttp.SetRequestHeader("Content-Language", "ru"); WinHttp.SetRequestHeader("Content-Charset", "utf-8"); WinHttp.SetRequestHeader("Content-type", "application/octet-stream; charset=utf-8;");//Другая сторона должна понять входные данные см.oADOStream, а вот если вдруг не поймет (в чем у меня есть сомнения...), тогда придется указать явное без указания параметров выше: // WinHttp.Send(СтрокаПараметров); Попытка WinHttp.Send(СтрокаПараметров); лпОтвет = WinHttp.ResponseText(); тк=СоздатьОбъект("Текст"); тк.ДобавитьСтроку(лпответ); тк.Записать("c:\123.html"); Статус = СокрЛП(WinHttp.Status); Описание = СокрЛП(WinHttp.StatusText); Исключение Статус = "0"; Описание = СокрЛП(ОписаниеОшибки()); КонецПопытки; Сообщить(Статус); Сообщить(Описание); WinHttp.Open("GET", лпСайт, 0); WinHttp.Send(); Стр = WinHttp.ResponseText(); Текст = СоздатьОбъект("Текст"); Текст.ДобавитьСтроку(Стр ); Текст.Записать("c:\0123.html"); КонецФункции // ОтправитьЗапросПост Процедура Сформировать() Перем ИмяСертификата; Ответ=ОтправитьЗапросПост(); КонецПроцедуры |
|||
85
Djelf
27.07.18
✎
10:04
|
(81) >curl -iv --user 111111:pppppppp -d @- https://www.kvak.ru/api/sellout/json/
-d зачем? для начала просто curl -iv --user 111111:pppppppp https://www.kvak.ru/api/sellout/json/ ну хоть адрес рассекретил... у них/у нас проблема с ssl надо принудительно указывать протокол, так что curl -iv --sslv3 --user 111111:pppppppp https://www.kvak.ru/api/sellout/json/ |
|||
86
Djelf
27.07.18
✎
10:10
|
(84) Вот почему, скорее всего, работает
Скрипт.Eval("WinHttp.Option(4)=13056");//intSslErrorIgnoreFlags |
|||
87
tgu82
27.07.18
✎
10:24
|
(85) оправлял такую строку:
curl -is --user login:password https://www.***.ru/api/sellout/json/ Получил такой ответ: HTTP/1.1 404 Not Found Server: nginx Date: Fri, 27 Jul 2018 07:17:35 GMT Content-Type: text/html; charset=windows-1251 Transfer-Encoding: chunked Connection: keep-alive P3P: policyref="/bitrix/p3p.xml", CP="NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA" X-Powered-CMS: Bitrix Site Manager (be5153de5a662b650b328b6e92d21638) Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Set-Cookie: PHPSESSID=mo6g06tg0vcr8nei2boetv8524; path=/; domain=***.ru; HttpOnly Set-Cookie: BITRIX_SM_SALE_UID=1215258; expires=Mon, 22-Jul-2019 07:17:34 GMT; Max-Age=31104000; path=/; domain=***.ru Set-Cookie: BITRIX_SM_SALE_UID=1215258; expires=Mon, 22-Jul-2019 07:17:34 GMT; Max-Age=31104000; path=/; domain=***.ru Set-Cookie: BITRIX_SM_LOGIN=114-20180625-124350-35; expires=Sat, 01-Jul-2023 07:17:34 GMT; Max-Age=155520000; path=/; domain=***.ru Filter is empty Что для меня этот ответ сайта означает? |
|||
88
tgu82
27.07.18
✎
10:28
|
(87)+ Вместо
HTTP/1.1 404 Not Found Server: nginx Мне надо было получить как я понимаю 200 Server: nginx ОК |
|||
89
Djelf
27.07.18
✎
11:01
|
(87) Уже лучше!
> HTTP/1.1 404 Not Found Видимо get запросы не работают. Тогда post, только файл data.json в каталог с curl положи curl -is --user login:password -d "@data.json" -X POST https://www.***.ru/api/sellout/json/ |
|||
90
tgu82
27.07.18
✎
11:37
|
(89) Спасибо. Сработало правильно
type f:\curl_7\sellout-data.json | f:\curl_7\curl -is --user логин:пароль -d @- https://www.***.ru/api/sellout/json/ И получил ответ: HTTP/1.1 200 OK Server: nginx Date: Fri, 27 Jul 2018 08:29:52 GMT Content-Type: application/json; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive P3P: policyref="/bitrix/p3p.xml", CP="NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA" X-Powered-CMS: Bitrix Site Manager (be5153de5a662b650b328b6e92d21638) Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Set-Cookie: PHPSESSID=6l8djqlv3e0f02bse0p972uj74; path=/; domain=***.ru; HttpOnly Set-Cookie: BITRIX_SM_SALE_UID=1215258; expires=Mon, 22-Jul-2019 08:29:51 GMT; Max-Age=31104000; path=/; domain=***.ru Set-Cookie: BITRIX_SM_SALE_UID=1215258; expires=Mon, 22-Jul-2019 08:29:51 GMT; Max-Age=31104000; path=/; domain=***.ru Set-Cookie: BITRIX_SM_LOGIN=114-20180625-124350-35; expires=Sat, 01-Jul-2023 08:29:51 GMT; Max-Age=155520000; path=/; domain=***.ru Access-Control-Allow-Origin: * [1768,1769,1770] Вроде как начальный этап получился |
|||
91
Fram
27.07.18
✎
16:59
|
(83) надеюсь программируешь ты лучше чем читаешь?
из более свежей винды winhttp попробуй, говорю. если получится на winxp установи (67) и там попробуй еще раз |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |