Имя: Пароль:
1C
1С v8
Как открыть инет-страничку - по ссылке - и сохранить её код?
0 Garry1010
 
16.03.21
17:35
Есть некий url на сайт. Беда в том, что если его открыть в браузере, то он нормально открывается и показывает json-структуру, которую и надо в конце концов. Но при попытке получить тот же результат через объект HTTPЗапрос выдаёт какую-то хрень. А именно, он возвращает какой-то html-код типа такого:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/html">
<head>
    <meta charset.............
Причём эта хрень в браузере не открывается по-человечески. Как оно умудряется так работать, без понятия, - это всё современные извраты, уверен.[:злобность:]
...
Так как же в 1С открыть эту страничку (по ссылке, а не то, что я привёл тут) и сохранить её код в файл? Есть такие варианты?
1 Kassern
 
16.03.21
17:46
(0) Есть к примеру url api-adress.ru/orders?date=123&date2=234 который возвращает какой то json ответ. Так вот чтобы ты в 1ске его получил:
1) подключится к сервере через http соединение api-adress.ru
2) создать заголовки с типом соответствие и там прописать что ты хочешь получить ответ именно в json ("Content-Type","application/json") и прописать токен авторизации, если нужен (в твоем случае врятли).
3) создать http запрос, в котором прописать путь к скрипту orders?date=123&date2=234 и указать заголовки
4) вызвать нужный метод (POST, GET, PUT...) с данным запросом. В твоем случае, скорее всего это обычные GET запрос.
2 Dzenn
 
гуру
16.03.21
17:48
да, скорее всего дело в заголовках
3 Garykom
 
гуру
16.03.21
17:49
(0) ПолеHTML документа используй, это самое простое
4 Kassern
 
16.03.21
17:50
(1) и да обработать правильно ответ еще. В твоем случае скорее всего можно так:
    Ответ=Соединение.ВызватьHTTPМетод("GET",Запрос);
    СтрокаОтвета=Ответ.ПолучитьТелоКакСтроку();
    Если ЗначениеЗаполнено(СтрокаОтвета) Тогда
        Поток=Ответ.ПолучитьТелоКакПоток();
        ЧтениеJSON=Новый ЧтениеJSON;
        ЧтениеJSON.ОткрытьПоток(Поток);
        МассивДанных=ПрочитатьJSON(ЧтениеJSON);
        ЧтениеJSON.Закрыть();
    КонецЕсли;
5 acht
 
16.03.21
17:53
(0) > Как оно умудряется так работать, без понятия, - это всё современные извраты, уверен
Это характеризует в первую очередь тебя, а не сайт/апи/1С и пр.
6 Garikk
 
16.03.21
18:16
(0) <Как оно умудряется так работать, без понятия, - это всё современные извраты, уверен.[:злобность:] >
+1 к (5)

современные это какие? 10 летней давности? то у вас не получается json выцепить из запросов, говорит лишь о вашей квалификации и непонимании того как веб работает, неважно современный или нет.

далее, открывать ссылку надо в браузере И смотреть в средствах разработчика в network запросы которые возвращают нужный тебе json, зачастую всякие api-вьюшки возвращают всякие плюшки чтобы ты json этот видел отформатированным и красивым в браузере, а не мешанину из символов на 10 листов без переносов, плюс может там тебе возвращается ошибка по авторизации?
7 Garry1010
 
16.03.21
23:07
(5) Я не должен - и не могу - быть специалистом во всех областях IT, а их уже развелось как грязи.:((
8 Garry1010
 
16.03.21
23:08
(6) То же самое - см. выше.
9 ДедМорроз
 
16.03.21
23:12
Самое простое-берем браузер,в котором он отображается и управляем им или через расширение браузера или,если браузер Осёл,то через Com-объект.
10 acht
 
16.03.21
23:13
(7) > Я не должен - и не могу.
Каким образом это заставляет тебя злобствовать?
11 Garry1010
 
17.03.21
13:45
(4) А что, ПолучитьТелоКакСтроку() и ПолучитьТелоКакПоток() могут вернуть разные результаты?
12 Garry1010
 
17.03.21
13:54
(2) А что значит создать заголовки?
Ведь: HTTP-заголовки ответа сервера в виде соответствия: "Название заголовка" - "Значение".
Использование: Только чтение.

Как же их создать можно? Не вижу.
13 Garykom
 
гуру
17.03.21
13:59
(12) СП или гугл продать?
14 acht
 
17.03.21
14:00
(13) > СП
это всё современные извраты, уверен.[:злобность:]

=)
15 Garykom
 
гуру
17.03.21
14:03
(14) Ну да с такой длиной и быть таким нубом очень странно
16 Garry1010
 
17.03.21
14:08
А что-то более умное есть?
17 Garykom
 
гуру
17.03.21
14:15
(16) "Наймите программиста"©
18 acht
 
17.03.21
14:24
19 Kassern
 
17.03.21
14:25
(16) на инфостате и мисте полно тем и примеров как совершать http соединение и обрабатывать результаты через 1с, куча примеров с get,post запросами. Найдите время и почитайте, там все достаточно просто, либо воспользуйтесь советом (17).
20 Garry1010
 
17.03.21
14:26
Любит же наш человек почесать свой ЧСВ - хлебом не корми. Тьфу на вас, тьфу на вас ещё раз.:((
21 acht
 
17.03.21
14:44
(20) Чо, больше не придешь?
22 Kassern
 
17.03.21
14:45
(20) а ты хочешь, чтобы за тебя все с нуля написали? Я в (1) (4) итак максимально ясно расписал, что нужно делать, если этого не достаточно, то врятли тут кто-то сможет помочь
23 TormozIT
 
гуру
17.03.21
14:51
Бери конструктор http-запросов в 1С (например http://devtool1c.ucoz.ru/index/konsol_http_zaprosov/0-66 )
Подбирай заголовки (можно начать со сниферинга браузерных запросов например через Wireshark). В тяжелых случаях потребуется создание сессии и передача ее токена, но тогда точно легко не решишь задачу.
Дальше жмешь "сгенерировать код" https://www.hostedredmine.com/issues/862516
и получаешь готовый код
24 Garikk
 
17.03.21
14:57
(20) Не хочешь разбираться, а хочешь бесплатно чтобы за тебя проблему решили?
Это наш человек не ЧСВ хочет почесать, а коекто хочет чтобы за него нахаляву его работу сделали...и при этом еще выпендривается
25 acht
 
17.03.21
15:01
(23) > через Wireshark
Чот как-то сурово сразу так.
26 TormozIT
 
гуру
17.03.21
15:10
(25) Есть что то попроще или удобнее? Чем пользуешься сам? Что советуешь новичкам?
27 acht
 
17.03.21
16:06
(26) Кнопка F12 в браузере
28 Garikk
 
17.03.21
16:39
(26) devtools по f12 в браузерах и postman
29 TormozIT
 
гуру
17.03.21
18:30
(27) Согласен. Это удобнее.
30 TormozIT
 
гуру
17.03.21
18:32
(28) Как postman позволяет ловить запросы от браузера?
31 Garry1010
 
19.03.21
15:47
Короче, для моего случая правильный вариант доступа оказался таким, что в HTTPСоединение в первом параметре конструктора подставляется адрес НЕтестового сайта без имени протокола, но с указанием пути к API (а точнее: fgis.gost.ru/fundmetrology/eapi/). А в качестве параметра конструктора объекта HTTPЗапрос подставляются ТОЛЬКО параметры команды GET.

Но стоило это мне хз сколько дней научного тыка и сотен попыток понять чего же эти объекты хотят в параметрах - путём тупой вариации этих URL'ов. Изменял их туда-сюда, пытаясь подобрать правильные.
Ну, может, ещё и заголовки влияют - тут уже я вообще без понятия: из инета понадёргал всяких вариантов.
32 Kassern
 
19.03.21
16:02
(31) нда...а ты точно читал, что я тебе в (4)  написал? Там сразу в 1 пункте написано, что нужно цепляться вначале к самому серверу, без пути к скрипту. в пункте 3 описано, как раз про то что надо пихать путь до скрипта в хттп запрос
33 Kassern
 
19.03.21
16:03
(32) спецом же на примере тебе расписал
34 Garykom
 
гуру
19.03.21
16:08
Хыхыхыыыыыыыыыыы
35 Garry1010
 
19.03.21
16:12
(32) У тебя в (4) написано совсем другое. Не веришь? О_О
36 Kassern
 
19.03.21
16:13
(35) Ошибся, в (1) посте я расписал тебе все еще и с примером. А в (4)  дополнил, как можно распарсить json ответ
37 Garykom
 
гуру
19.03.21
16:29
(35) Ты бы юморист сначала свой нерабочий код приве
А потом телепатов звал
38 Garykom
 
гуру
19.03.21
16:29
(37) *привел
39 Kesim
 
19.03.21
18:49
(0) не слушай их, они все современные.
выводи на форму текстовый реквизит с видом поле ХТМЛ, в значение реквизита вставляй некий урл.  форму открываешь и показывает json-структуру и даже не надо сохранять, всегда свежий
40 Garykom
 
гуру
19.03.21
20:07
(39) см (3)