|   |   | 
| 
 | Помогите конвертировать cUrl запрос в 1С | ☑ | ||
|---|---|---|---|---|
| 0
    
        Mulber 04.02.23✎ 13:46 | 
        Доброго времени суток, камрады.
 Нужна помощь в конвертации cUrl запроса в 1С. Запрос рабочий. curl -v -G -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36" -H "Host: api.<кто-то-там>.com" -H "Content-Type: application/x-www-form-urlencoded" -u <юзер>:<пароль> "https://api.<кто-то-там>.com/v1/oauth2/authorize" -d "response_type=code" -d "client_id=<ид_клиента>" -d "redirect_uri=https://localhost/callback" -D "c:\out.txt" Как делал я: client_id = "<ид_клиента>"; user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"; Заголовки = Новый Соответствие; Заголовки.Вставить("User-Agent", user_agent); Заголовки.Вставить("Host", "api.<кто-то-там>.com"); Заголовки.Вставить("Authorization", "Basic " + СтрокаВBase64("<юзер>:<пароль>")); Заголовки.Вставить("Accept", "*/*"); Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded"); Соединение = Новый HTTPСоединение("api.<кто-то-там>.com", , , , , , Новый ЗащищенноеСоединениеOpenSSL()); //Соединение = Новый HTTPСоединение("api.<кто-то-там>.com", 443, "<юзер>", "<пароль>", , , Новый ЗащищенноеСоединениеOpenSSL()); Запрос = Новый HTTPЗапрос("/v1/oauth2/authorize", Заголовки); //СтрокаЗапроса = "response_type=code&client_id=" + Строка(client_id) + "&redirect_uri=https%3A%2F%2Flocalhost%2Fcallback"; СтрокаЗапроса = "response_type=code&client_id=" + Строка(client_id) + "&redirect_uri=https://localhost/callback"; Запрос.УстановитьТелоИзСтроки(СтрокаЗапроса); //Ответ = Соединение.ВызватьHTTPМетод("GET", Запрос); Ответ = Соединение.Получить(Запрос); cUrl запрос возвращает респонз 302 с заголовком Location, в котором указан адрес для редиректа. Мой же запрос возвращает тоже 302, но в заголовке информация о том, что запрос заблокирован, мол неверно составлен. Помогите найти ошибку. Заранее всем спасибо! | |||
| 1
    
        hockeyist 04.02.23✎ 13:50 | 
        (0) Попроси GPT преобразовать curl в Python.     | |||
| 2
    
        mistеr 04.02.23✎ 13:50 | 
        (0) Берешь Fiddler, смотришь итоговые запросы, сравниваешь.     | |||
| 3
    
        hockeyist 04.02.23✎ 13:55 | 
        (1) Можно сразу в 1С попросить, тоже работает     | |||
| 4
    
        vde69 04.02.23✎ 14:06 | 
        Гет запрос не содержит тело, наверно у тебя нужен не гет     | |||
| 5
    
        Mulber 04.02.23✎ 14:16 | 
        (4) мне заголовок Location ответа нужен     | |||
| 6
    
        vde69 04.02.23✎ 14:18 | 
        (5) установитьтелоизстроки не применимо для гет запросов.
 Делай или пост или хонл | |||
| 7
    
        vde69 04.02.23✎ 14:21 | 
        Ну либо текст запроса плюсуй к адресу, тогда будет гет
 Короче почитай отличия гет пост и других запросов | |||
| 8
    
        Franchiser 04.02.23✎ 15:21 | 
        (1) лучше сразу попросить в 1С конвертировать     | |||
| 9
    
        Mulber 04.02.23✎ 15:24 | 
        (8) вот что мне GPT выдал ):
 &Запрос = Новый HttpЗапрос("api.<кто-то-там>.com/v1/oauth2/authorize"); &Запрос.УстановитьЗаголовок("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"); &Запрос.УстановитьЗаголовок("host", "api.<кто-то-там>.com"); &Запрос.УстановитьЗаголовок("content-type", "application/x-www-form-urlencoded"); &Запрос.УстановитьАвторизацию("<юзер>", "<пароль>"); &Параметры = Новый АссоциативныйМассив; ДобавитьВМассив(&Параметры, "response_type", "code"); ДобавитьВМассив(&Параметры, "client_id", "<ид_клиента>"); ДобавитьВМассив(&Параметры, "redirect_uri", "https://localhost/callback"); &Запрос.УстановитьТелоЗапроса(ЗакодироватьЗапросФормы(&Параметры)); &Результат = &Запрос.Выполнить(); | |||
| 10
    
        Mulber 04.02.23✎ 15:33 | 
        адаптирую под 1с, отпишусь, спасибо всем за идеи и предложения     | |||
| 11
    
        breezee 04.02.23✎ 19:46 | 
        (9) Новый АссоциативныйМассив мощно     | |||
| 12
    
        hockeyist 04.02.23✎ 21:25 | 
        (11) Бывает. Если вопросы неправильно задавать.
 Мне выдало: Процедура ОтправитьЗапрос() Перем Запрос := Новый HTTPЗапрос(); Запрос.УстановитьURL("https://api.<кто-то-там>.com/v1/oauth2/authorize"); Запрос.УстановитьМетод("POST"); Перем Заголовки := Новый Структура(); Заголовки.Вставить("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"); Заголовки.Вставить("Host", "api.<кто-то-там>.com"); Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded"); Запрос.УстановитьЗаголовки(Заголовки); Перем Данные := Новый Структура(); Данные.Вставить("response_type", "code"); Данные.Вставить("client_id", "<ид_клиента>"); Данные.Вставить("redirect_uri", "https://localhost/callback"); Запрос.УстановитьТело(Данные.Представление()); Перем Ответ := Запрос.Отправить(); ФайлТекста.Записать("c:\out.txt", Ответ.Тело(), Неопределено, КодировкаТекста.UTF8); КонецПроцедуры | |||
| 13
    
        hockeyist 04.02.23✎ 21:29 | 
        Что лишний раз доказывает, что генерится все-таки код на Python. А потом отрабатывает кривой переводчик на 1С.
 Но в контексте вопроса ТС, ответ дан верный. А именно: используй POST. Остальное детали | |||
| 14
    
        vde69 04.02.23✎ 21:35 | 
        (13) верный ответ был дан в (4)     | |||
| 15
    
        hockeyist 04.02.23✎ 22:08 | 
        (14) Да, ты не хуже GPT )))     | |||
| 16
    
        Mulber 04.02.23✎ 22:26 | 
        (12) только учусь задавать вопросы нейросети. хотя и сам еще в 2003 выступал с речью о нейросетях в одном из ВУЗов. много воды утекло, технологии просто удивляют нынче ) еще раз всем спасибо!     | |||
| 17
    
        Mulber 07.02.23✎ 20:51 | 
        еще вопрос а кто-нибудь работал с кукисами chrome из 1С. файловая база SQLite, может статейку посоветуете?     | |||
| 18
    
        vde69 07.02.23✎ 21:00 | 
        (17)  Заголовки.Вставить("кукипоанглийски", соответствие);     | |||
| 19
    
        Mulber 07.02.23✎ 21:07 | 
        (18) это я знаю, а как мне прочитать куки из файла в формате хромовских куки (SQLite)?     | |||
| 20
    
        Mulber 07.02.23✎ 21:08 | 
        %AppData%\Local\Google\Chrome\User Data\Default\Network\Cookies     | |||
| 21
    
        vde69 07.02.23✎ 21:28 | 
        ответ.заголовки["setcoocie"]     | |||
| 22
    
        Mulber 07.02.23✎ 21:32 | 
        (21) не то. в браузере мы логинимся, куки сохраняются в файле. в 1С нам необходимо получить эти куки браузера (из вышеуказанного файла) и передать в запросе, минуя этап ручного логина.     | |||
| 23
    
        Mulber 07.02.23✎ 21:36 | 
        этот api подразумевает только логиниться через браузер, приходится хитрить и пытаться "скормить" куки браузера     | |||
| 24
    
        Mulber 07.02.23✎ 21:38 | 
        извиняюсь, очередность слов перепутал: логиниться только через браузер     | |||
| 25
    
        Garykom гуру 07.02.23✎ 21:50 | 
        в 1С встроен браузер webkit
 кто тебе мешает логиниться через него? | |||
| 26
    
        Mulber 07.02.23✎ 21:54 | 
        (25) хотелось бы минимум действий от пользователя, а использовать существующее подключение в браузере.     | |||
| 27
    
        vde69 08.02.23✎ 12:38 | 
        (22) куки уже сохраненные на диске по идее должны шифроваться от подобных попыток их прочитать. Хотя точно я не знаю...     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |