Имя: Пароль:
1C
 
HTTPОтвет - прошу в json, приходит в html
,
0 mikecool
 
10.07.19
11:48
Ссылка http://<сервер>/<ресурс>/?date_from=01.07.2019%2000:00:00&id=<id>&format=json
в браузере возвращает json
в 1с:
    Соединение = Новый HTTPСоединение("<сервер>");
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("date_from", "01.07.2019%2000:00:00");
    Заголовки.Вставить("id", "<id>");
    Заголовки.Вставить("format", "json");

    Запрос = Новый HTTPЗапрос("<ресурс>", Заголовки);
    ИмяФайла = ПолучитьИмяВременногоФайла("json");
    Результат = Соединение.Получить(Запрос, ИмяФайла);
    Данные = Результат.ПолучитьТелоКакСтроку();
Код состояния = 200, тип результата - html, тело - не то, что запрошено
Пробовал в запрос всю строку пихать, без заголовков - тот же результат.
Что я делаю не так?
и еще вопрос - а чем просматривать http запросы, которые уходят из 1с? желательно что-то для чайников )
1 PiotrLoginov
 
10.07.19
11:53
тут скорее надо спрашивать у тех, кто сервис ваял.
чем смотреть запросы/ответы - не подскажу. но сейчас этого добра... от плагинов для браузеров до самостоятельных утилит.
2 Cyberhawk
 
10.07.19
11:55
Всю строку в запрос и надо пихать. Но без базового УРЛа.
3 Александр Б
 
10.07.19
11:59
(0) см (2)
date_from, id и format - это не заголовки. Это параметры, которые необходимо передавать вместе с "ресурсом".
4 PiotrLoginov
 
10.07.19
11:59
кстати, да ...
Запрос = Новый HTTPЗапрос("<ресурс>/?date_from=01.07.2019%2000:00:00&id=<id>&format=json", Заголовки);
5 mikecool
 
10.07.19
12:20
запихнул, но результат не поменялся (
6 mikecool
 
10.07.19
12:21
+5 ессно без урла пихал )
7 zva
 
10.07.19
12:36
Описание api есть?
Заголовки.Вставить("Content-Type", "application/json");
Можно тем же Postman посмотреть что уходит
8 mikecool
 
10.07.19
12:55
(7) описание получить можно, но сложно
попробую, спасибо
9 mikecool
 
10.07.19
12:59
+8 не помогло, сохраняется хтмл, буду запрашивать описание апи
10 butterbean
 
10.07.19
12:59
(6) а "%20" на пробел заменил?
11 Вафель
 
10.07.19
12:59
(7) это не обязательно ты же не передаешь, а получаешь
12 butterbean
 
10.07.19
13:00
(0) если запрос в браузере работает, то и корректно составленный (4) должен работать 100%
13 Вафель
 
10.07.19
13:00
может дата нужна в другом формате
20191231T111234
14 Garykom
 
гуру
10.07.19
13:02
(9) Покажи что ты запихнул (код покажи кусок), 101% что где то скосячил
15 mikecool
 
10.07.19
13:09
(10) заменил, выполнение Соединение.Получить в отладке замерло на несколько секунд(как будто передача была), но в результате снова html
(14) результат на данный момент

        Соединение = Новый HTTPСоединение("<урл>");
    Запрос = Новый HTTPЗапрос("<ресурс>?date_from=01.07.2019 00:00:00&id=<id>&format=json");
    ИмяФайла = ПолучитьИмяВременногоФайла("json");
    Результат = Соединение.Получить(Запрос, ИмяФайла);
    Данные = Результат.ПолучитьТелоКакСтроку();

<ресурс> начинается и заканчивается на "/" - может на обратный слеш надо заменить?
16 mikecool
 
10.07.19
13:10
+15 не, обратные сразу дают код ответа 404
17 Garykom
 
гуру
10.07.19
13:14
(15) Убери конечный / в ресурсе
18 Garykom
 
гуру
10.07.19
13:14
(17)+ А начинаться да должен на /
19 Garykom
 
гуру
10.07.19
13:16
И проверь у тебя случаем не httpS требуется?
Что в ответе внутри html?
20 Garykom
 
гуру
10.07.19
13:17
(19)+ Просто браузеры автоматом умеют делать редирект с http на https если сервер приказал, 1С это вручную надо
21 Cyberhawk
 
10.07.19
13:17
Что внутри пришедшего html'а?
22 mikecool
 
10.07.19
21:37
все как всегда банально - после ошибочного переноса параметров в заголовки и возвращения оных обратно в строку запроса я забыл перед параметрами слеш добавить, а сервер к этому оказался чуствителен
23 PiotrLoginov
 
11.07.19
01:46
Все хорошо, что хорошо кончается