Имя: Пароль:
1C
 
Ошибка в http-запросе
0 Momus
 
14.09.22
08:04
curl -X POST "http://0.0.0.0/apikeys/token" -H "accept: application/json" -H "apiversion: 99.0" -H "Content-Type: application/json-patch+json" -d "
{\"apiKey\":\"00000000-0000-0000-0000-000000000000\"}"

Сообщение = Новый СообщениеПользователю;
СерверИсточник = "http://0.0.0.0";

Попытка
    HTTPСоединение = Новый HTTPСоединение(СерверИсточник);
Исключение
    Сообщение.Текст = "Не удалось соединиться с сервером: " + СерверИсточник;
    Сообщение.Сообщить();
    Сообщение.Текст = ОписаниеОшибки();
    Сообщение.Сообщить();
    Возврат;
КонецПопытки;

Заголовки = Новый Соответствие;
Заголовки.Вставить("accept", "application/json");
Заголовки.Вставить("apiversion", "99.0");
Заголовки.Вставить("Content-Type", "application/json-patch+json");

Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
Запись.ЗаписатьНачалоОбъекта();
Запись.ЗаписатьИмяСвойства("apiKey");
Запись.ЗаписатьЗначение("00000000-0000-0000-0000-000000000000");
Запись.ЗаписатьКонецОбъекта();
СтрокаJSON = Запись.Закрыть();

HTTPЗапрос = Новый HTTPЗапрос("/apikeys/token", Заголовки);
HTTPЗапрос.УстановитьТелоИзСтроки(СформироватьДобавляемыеДанные());

Попытка
    Результат = HTTPСоединение.ВызватьHTTPМетод("POST", HTTPЗапрос);
    Сообщение.Текст = Результат.ПолучитьТелоКакСтроку();
    Сообщение.Сообщить();
Исключение
    Сообщение.Текст = ОписаниеОшибки();
    Сообщение.Сообщить();
    Возврат;
КонецПопытки;

Ошибка при вызове метода контекста (ВызватьHTTPМетод): Ошибка работы с Интернет:  Couldn't resolve host name
Порты? HTTPСоединение работает без ошибок, ошибка на HTTPСоединение.ВызватьHTTPМетод("POST", HTTPЗапрос);
1 Garykom
 
гуру
14.09.22
08:13
>СерверИсточник = "http://0.0.0.0";

ху из?
2 Garykom
 
гуру
14.09.22
08:14
3 Смотрящий
 
14.09.22
08:15
"/apikeys/token" замени на "/apikeys/token/"
4 Garykom
 
гуру
14.09.22
08:16
(3) это пофиг
5 Momus
 
14.09.22
08:16
(1) Там нормальный адрес в оригинале
6 Garykom
 
гуру
14.09.22
08:17
у него "http://" лишнее
и странный ip адрес "0.0.0.0"
7 Garykom
 
гуру
14.09.22
08:18
(5) Прочитай уже мануал

В адресе сервера http:// не надо
Просто ip или имя сервера
http или https задается другим способом, через порт и Новый ЗащищенноеСоединениеOpenSSL()
8 Momus
 
14.09.22
08:18
(6) адрес уличной камеры в сети. Доступен с любого ПК с браузера
(7) я делал по примеру с итс(
9 Garykom
 
гуру
14.09.22
08:19
(8) покажи пример с итс
10 Momus
 
14.09.22
08:21
(9) https://its.1c.ru/db/intgr83/content/66/hdoc
В адресе сервера http:// не надо - помогло, хотя ошибку 405 теперь получают
11 Momus
 
14.09.22
08:23
(10) но если сделать как в (2), то все ок. спасибо
12 Garykom
 
гуру
14.09.22
08:23
(10)
СерверИсточник = "localhost";

Попытка
// Создать HTTP-соединение с сервером localhost.
HTTPСоединение = Новый HTTPСоединение(СерверИсточник);

как видишь никакого http:// в примере на итс
13 Garykom
 
гуру
14.09.22
08:26
(10) 405 смотри заголовок Allow в Результат
14 Momus
 
14.09.22
08:46
Нет, видимо что-то не так делаю. Все-таки нужно использовать POST в ВызватьHTTPМетод для получения нужного мне результата.
(13) не такого заголовка
ПолучитьТелоКакСтроку() возвращает 405 Not Allowed
15 Смотрящий
 
14.09.22
09:17
Что означает код ошибки сервера 405?
Код 405 Method Not Allowed говорит нам о том, что сервер получил определенный запрос с заданным HTTP-методом, смог его распознать, но не дает добро на его реализацию. То есть пользователь не получит доступ к контенту, который запросил.

В отличие от 404, 405 уточняет, что запрашиваемая страница существует и функционирует. Только вот стоит изменить используемый в HTTP-запросе метод. Иначе ничего не выйдет.
16 Kassern
 
14.09.22
09:25
(0) А где вы дальше используете СтрокаJSON? Почему в тело не помещаете запроса?
18 Momus
 
14.09.22
09:31
(16) это я неправильно сократил...
СтрокаJSON = СформироватьДобавляемыеДанные(),
т.е. должно быть HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON);
19 Momus
 
14.09.22
09:31
(17) пробовал
20 Kassern
 
14.09.22
09:31
(19) curl корректно у вас отрабатывает?
21 Kassern
 
14.09.22
09:33
Адрес у вас https или http?
22 Garykom
 
гуру
14.09.22
09:38
(14) Кроме ПолучитьТелоКакСтроку() у Результат есть еще Заголовки
Покажи их!
23 Garykom
 
гуру
14.09.22
09:39
(22)+ Конкретно в Результат.Заголовки.Allow что?
24 Momus
 
14.09.22
10:01
(23) я же говорю, что нет такого заголовка
25 Momus
 
14.09.22
10:03
(20) как проверить? не знаю(
(21) http
26 Garykom
 
гуру
14.09.22
10:06
(25) >как проверить? не знаю(

издеваешься?
curl поставь и запусти свою строку
возможно оно не пашет
27 Momus
 
14.09.22
10:10
(26) я уже загуглил, спасибо. не пашет
28 Kassern
 
14.09.22
10:12
(27) ахах))) Это первое, что вы должны были проверить) У вас POST метод не опубликован скорее всего
29 Momus
 
14.09.22
10:14
(28) это мой первый раз) в следующий раз будет меньше глупых вопросов. спасибо
30 Kassern
 
14.09.22
10:18
(29) да все норм. Я обычно постманом проверяю, работает ли вообще обмен с сервисом, если ошибка со стороны 1с. Если там норм, то уже начинаю 1ску ковырять