|
Помогите конвертировать 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) куки уже сохраненные на диске по идее должны шифроваться от подобных попыток их прочитать. Хотя точно я не знаю...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |