Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: 1с 7.7 отправить файл json с помощью post-запроса

v7: 1с 7.7 отправить файл json с помощью post-запроса
Я
   tgu82
 
26.07.18 - 14:40
7.7 отправить файл json с помощью post-запроса

Сразу говорю читал что имеется на эту тему
Но ощущаю себя обезьяной с гранатой.
Хотелось бы малость понять как передать
пароль, логин, имя сайта и имя файла через winhttp

Даже когда-то что-то пробовал (winhttp)
Задача не шкурная, поставщик требует эти данные.
В-принципе можем и оплатить если в разумных пределах.
Если нарушаю правила форума то по незнанию.
 
 
   tgu82
 
1 - 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 - это что? Я так понял что это для линукса программа но может и ошибаюсь ибо пока совсем не копенгаген в этих делах :)
   novichok79
 
2 - 26.07.18 - 14:52
а в чем сложность? раз уже через winhttp работали?
   tgu82
 
3 - 26.07.18 - 14:59
(2) Не работал а что-то пробовал может случайно что-то и получалось когда-то, но в практике не надо было а теперь надо хоть как отправлять json-файл, ну его я уж как-нибудь по данным ТИС сформирую. А вот с отправкой большой напряг. Посоветуйте чеи проще все это сделать? Мне вот curl нравится, но как в ее параметры добавить указание о том что надо файл json передать и указать имя файла?
Ну есть код какой-то с winhttp только мне он малопонятен все-таки, а придется пользоваться этой штукой постоянно
   Kigo_Kigo
 
4 - 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);
   NikVars
 
5 - 26.07.18 - 15:09
   tgu82
 
6 - 26.07.18 - 15:13
(5) Спасибо, читал я это но логика плохо мне очевидна
Зачем-то надо еще GET-запрос посылать
А зачем?
   Kigo_Kigo
 
7 - 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)) ;

    КонецЕсли;
   tgu82
 
8 - 26.07.18 - 15:15
(4) А мне же Post-запрос нужен.
И не вижу я как логин и пароль передать
   Kigo_Kigo
 
9 - 26.07.18 - 15:16
(8) Get это запросить данные с ервера, пост - отправить, логин и пароль укладиваются как и токен в моем примере
   Kigo_Kigo
 
10 - 26.07.18 - 15:18
по идее
XMLHttpRequest.setRequestHeader("Login", логин);
XMLHttpRequest.setRequestHeader("Password", Пароль);
 
 Рекламное место пустует
   tgu82
 
11 - 26.07.18 - 15:19
(9) Это понятно спасибо, но насчет логин и пароль не понял
ПТекстЗапроса = url+Отправить;  //Отправить это строка json
Строка json или файл json (типа \\оффис\проба.json) ?
   tgu82
 
12 - 26.07.18 - 15:22
(10) Вот как раз Да. Поймет ли сайт setRequestHeader("Login", логин)? Это в API сайта как-то должно быть указано?
   NSSerg
 
13 - 26.07.18 - 15:25
WinHttp.SetCredentials(Логин,Пароль,0)
   Kigo_Kigo
 
14 - 26.07.18 - 15:26
(11) я ее формирую как строку в 1с-ке, по шаблону, который дал сайт
(12) должно быть указано, куда совать логин и пароль, но почти уверен что в шапку
   tgu82
 
15 - 26.07.18 - 15:27
(13) winhttp - это
    WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1") ?
   NSSerg
 
16 - 26.07.18 - 15:30
WinHttp=СоздатьОбъект("WinHttp.WinHttpRequest.5.1");    
WinHttp.Open("POST", URL, 0, Логин, Пароль);
WinHttp.SetCredentials(Логин, Пароль, 0);
WinHttp.Send(POST_STRING);
(15) Конечно да.
   tgu82
 
17 - 26.07.18 - 15:34
(16) Спасибо. А из чего состоит post_string?
Какой у нее формат должен быть? И где здесь передача файла json?
   NSSerg
 
18 - 26.07.18 - 15:36
(17) Это и есть содержимое твоего JSON.
   trad
 
19 - 26.07.18 - 15:38
(17) post_string в твоем случае и есть строка в формате json
   tgu82
 
20 - 26.07.18 - 15:38
(18) То есть это получается длиннющая строка?
   trad
 
21 - 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();
   tgu82
 
22 - 26.07.18 - 15:40
(18,20) А просто имя файла как-то нельзя передать в параметры post-запроса чтоб сайт сообразил что это и есть нужный ему файл?
   NSSerg
 
23 - 26.07.18 - 15:41
(22) Нет. А зачем?
   tgu82
 
24 - 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 в винде как я понял - нет
   NSSerg
 
25 - 26.07.18 - 15:44
(24) У тебя проблема прочитать файл в строку?
   NSSerg
 
26 - 26.07.18 - 15:46
(24) В (21) Написано как это сделать
Данные = СоздатьОбъект("ADODB.Stream");
Данные.open();
Данные.loadFromFile(ПутьКФайлу);
   tgu82
 
27 - 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/
   Garykom
 
28 - 26.07.18 - 15:48
Разговор глухонемого со слепым ))
   tgu82
 
29 - 26.07.18 - 15:49
(26) Спасибо. Кажется дошло. просто получается что для Данные.LoadFromFile(путь) не играет роли что за содержимое файла. Это уже программа на сайте должна сообразить что это файл джейсон
   NSSerg
 
30 - 26.07.18 - 15:50
(27) Я честно говоря не понимаю, чем строка в (27) Тебя не устраивает. Это такая-же строка как и любая другая.
   Garykom
 
31 - 26.07.18 - 15:50
(27) Что ты пристал с этим своим "cat sellout-data.json | curl -is ..." ?

cat - это просто чтение из файла и вывод в консоль с целью затолкать из консоли в curl
   tgu82
 
32 - 26.07.18 - 15:50
(28) Да нет - разговор глухонемого еле видящего с говорящими и зоркими ))
   NSSerg
 
33 - 26.07.18 - 15:51
(29) Ты передаешь с помощью POST не файл, а строку!
В данном случае это строка в формате JSON, и сейчас она у тебя лежит в файле.
 
 
   tgu82
 
34 - 26.07.18 - 15:51
(33) А вот теперь дошло наконец-то )))
   Garykom
 
35 - 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);
   tgu82
 
36 - 26.07.18 - 15:58
(34)+ Теперь попробую, по результатам отпишусь
Всем огромное спасибо. Я уже если и с гранатой то с ручной )))
   tgu82
 
37 - 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(Данные);
   tgu82
 
38 - 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);

Не хочет однако
   trad
 
39 - 26.07.18 - 16:26
(35) у способа с передачей строки есть один небольшой недостаток. Если строка довольно большая, скажем в пару Мб (могу ошибаться), то семерка свалится при передаче ее в com
   trad
 
40 - 26.07.18 - 16:27
(38) на кодировку файла обрати внимание
   tgu82
 
41 - 26.07.18 - 16:31
(40) Как указать кодировку или сохранить в какой-то кодировке надо?
   tgu82
 
42 - 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: Получено непредвиденное сообщение или оно имеет неправильный формат.
   trad
 
43 - 26.07.18 - 16:38
(41) в какой кодировке надо, надо узнать у http://www.***.ru/api
   Djelf
 
44 - 26.07.18 - 16:40
(42) А там случаем требуется не multipart/form-data?
Тогда текст запроса нужно по другому готовить.
   tgu82
 
45 - 26.07.18 - 16:40
(44) Не знаю. Завтра спрошу. А чем изменится запрос?
   Djelf
 
46 - 26.07.18 - 16:46
(45) Вот так он меняется
 _ТекстЗапроса="--"+boundary+"
 |Content-Disposition: form-data; name=""xml_file""
//Следующая строка должна быть пустая!!!

 |
 |"+ТекстЗапроса+"
 |--"+
 |";


Попробуй сначала через curl послать свой текст.
У curl значительно лучше отладочные сообщения.
Тыкать WinHttp без примера кода отправки можно долго...
   tgu82
 
47 - 26.07.18 - 16:48
(46) Ну да. А как через curl передать строку?
Логин пароль вижу как? Сайт вижу, а строку как? Какой ключ нужен?
   Djelf
 
48 - 26.07.18 - 16:51
(47) Просто имя файла в конце строки.
   NSSerg
 
49 - 26.07.18 - 16:53
Попробуй отправить любым онлайн сервисом
Например
http://seriyps.ru/postget/
 
 Рекламное место пустует
   NSSerg
 
50 - 26.07.18 - 16:56
   tgu82
 
51 - 26.07.18 - 16:57
Не могу скачать готовый CURL скачивается она с кучей папок. И где исполняемый файл - непонятно
   Djelf
 
52 - 26.07.18 - 16:59
   MadDAD
 
53 - 26.07.18 - 17:00
(47) замени CAT на TYPE смысл тот же.
   Necessitudo
 
54 - 26.07.18 - 17:10
Не факт что там Basic авторизация)
   trad
 
55 - 26.07.18 - 17:10
   Владимир1С
 
56 - 26.07.18 - 17:20
(51) Работающий пример нужен?
   tgu82
 
57 - 26.07.18 - 17:23
(56) Если не жалко - скинь пожалуйста.
а то поставщик поедом ест уже. надо выдать не гора уголек )))
   tgu82
 
58 - 26.07.18 - 17:25
сПАСИБО. Готовый curl скачал. Запускается однако )))
   Владимир1С
 
59 - 26.07.18 - 17:31
(57) Что за поставщик? не пони экспресс случаем?
   Владимир1С
 
60 - 26.07.18 - 17:36
(58) Поймал?
   tgu82
 
61 - 26.07.18 - 17:52
(59,60) Да спасибо. Нет не он.
Да это не играет роли вообще.
Вот почему не работает никак ???
curl -is --user Логин:Пароль @- https://www.***.ru/api/sellout/json/ в командной среде (win xp)

Никакого ответа - может она вообще не запустилась = хрен поймешь
   Владимир1С
 
62 - 26.07.18 - 17:54
(61) Пусть пришлют строку подключения по http, яснее будет, куда копать
   Владимир1С
 
63 - 26.07.18 - 17:57
(61) Старт - загнать заказ ...
   Djelf
 
64 - 26.07.18 - 18:00
(61) Включи отладку https://ec.haxx.se/usingcurl-verbose.html
   Garykom
 
65 - 26.07.18 - 18:12
(61) Объясни откуда (из какой Ж) ты взял это "-is" ?
   Fram
 
66 - 26.07.18 - 18:13
(38) я так понимаю из winxp отправляешь?
попробуй из более свежей винды
   Fram
 
67 - 26.07.18 - 18:19
   Djelf
 
68 - 26.07.18 - 18:27
(65) А что, да... нормально.
-i Include protocol headers in the output
-s Silent mode. Don't output anything

(61) И почему ничего не показывает?
   Garykom
 
69 - 26.07.18 - 18:49
(68) Ну так убрать -s будет показывать ошибки
   Garykom
 
70 - 26.07.18 - 18:51
У разработчика cURL интересные завихрения, сам себя обрезал на длинные ключи разрешив короткие составные из однобуквенных.

"curl -i -s" - намного понятнее и можно было бы "curl -is" использовать для чего другого.
   Djelf
 
71 - 26.07.18 - 19:01
(70) Да ты что? Какие завихрения? Это ж unix-way.
И нельзя было бы -is использовать для чего то другого. Составной через один "-" но ключи односимвольные.
Многосимвольные ключи через два "-".
 
И вообще я на curl ВК`шку для 7.7 собрал, а то под wine ssl в mshttp не робит ;)
Шикарная штука, этот curl. Все умеет, зараза такая...
   Garykom
 
72 - 26.07.18 - 19:06
(71) Не проще .Net использовать через ВК от Serginio1 ?
   Garykom
 
73 - 26.07.18 - 19:07
(72)+ Обычно разрабы API дают готовые примеры под C# их только в ВК засунуть и все.
   Djelf
 
74 - 26.07.18 - 19:07
(72) Под wine? оО
   Garykom
 
75 - 26.07.18 - 19:08
(74) До 3.5 работает идеально под Wine с 4.5 есть некоторые легкие траблы.
   Garykom
 
76 - 26.07.18 - 19:10
(71) Кстати под wine какую сборку 1С 77 юзаем? В каком режиме в файловом или еще как?
   Djelf
 
77 - 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 все равно быстрее ;)
   tgu82
 
78 - 26.07.18 - 19:40
(71) Почему не работает? Обычные ключи и среда CMD в которой
Curl запускается.
   Djelf
 
79 - 26.07.18 - 19:45
(78) Ты ключем -s подавил все сообщения curl.
Убери его и добавь вместо него v.
   tgu82
 
80 - 26.07.18 - 19:58
(79) Спасибо
   tgu82
 
81 - 26.07.18 - 21:26
(79) не помогло, висит в непонятке, ctrl+c нажал и опять запустил
curl -iv --user 111111:pppppppp -d @- https://www.kvak.ru/api/sellout/json/
а логин и пароль в кавычках надо ?
   Fram
 
82 - 26.07.18 - 22:02
(81) ты (66),(67) пробовал?
   tgu82
 
83 - 27.07.18 - 09:05
(82) Мне бы хоть понять что winhttp работает. То есть какой-то упрощенный что-ли запрос (может get-запрос)
Я когда-то пробовал сайт яндекса запрашивать, чего-то там в ответ пришло. На этом же компе кстати пробовал. А сейчас как-то все забылось - давно это было уже.
   tgu82
 
84 - 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");
КонецФункции // ОтправитьЗапросПост
Процедура Сформировать()  
Перем ИмяСертификата;    
    Ответ=ОтправитьЗапросПост();    
КонецПроцедуры
   Djelf
 
85 - 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/
   Djelf
 
86 - 27.07.18 - 10:10
(84) Вот почему, скорее всего, работает
Скрипт.Eval("WinHttp.Option(4)=13056")//intSslErrorIgnoreFlags
   tgu82
 
87 - 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

Что для меня этот ответ сайта означает?
   tgu82
 
88 - 27.07.18 - 10:28
(87)+ Вместо
HTTP/1.1 404 Not Found
Server: nginx

Мне надо было получить как я понимаю
200
Server: nginx
ОК
   Djelf
 
89 - 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/
   tgu82
 
90 - 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]

Вроде как начальный этап получился
   Fram
 
91 - 27.07.18 - 16:59
(83) надеюсь программируешь ты лучше чем читаешь?
из более свежей винды winhttp попробуй, говорю. если получится на winxp установи (67) и там попробуй еще раз


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует