Имя: Пароль:
1C
 
Почему Новый HTTPСоединение возвращает ошибку 500?
0 program345
 
07.04.25
13:43
привет форумчане!

Пытаюсь получить с сервера по Апи данные:

        ЗаголовокЗапроса = Новый Соответствие();
	ЗаголовокЗапроса.Вставить("Authorization", "корректный пароль");
	ЗаголовокЗапроса.Вставить("inn", "ввожу инн");
	ЗаголовокЗапроса.Вставить("kpp", "ввожу кпп");
	HTTP = Новый HTTPСоединение("mysite.ru/api/contract",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
	ЗапросGET = Новый HTTPЗапрос("/", ЗаголовокЗапроса);
	Результат = HTTP.Получить(ЗапросGET);


возвращает ошибку 500.


вот описание апи в формате yml:

servers:
  - url: https://mysite.ru/api
paths:
  /contract:
    get:
      summary: Активный договор по реквизитам (ИНН/КПП)
      operationId: getContract
      parameters:
        - in: query
          name: inn
          required: true
          schema:
            type: string
            example: "ИНН из договора"
        - in: query
          name: kpp
          schema:
            type: string
            example: "КПП из договора, необязательное поле, если КПП нет"
      tags:
        - Contract
      responses:
        "200":
          description: Возвращает текущий договор
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PromoContractDto"
        "401":
          description: Неавторизован
        "404":
          description: По реквизитам не найден договор
        default:
          $ref: "#/components/responses/BackEndError"


Куда копать?
1 Волшебник
 
07.04.25
13:44
500 - внутренняя ошибка сервера (BackEndError)
Обратитесь к админам сайта, куда вы подключаетесь, пусть разберутся.
2 Мультук
 
гуру
07.04.25
13:50
(0)

Сравни

HTTP = Новый HTTPСоединение("mysite.ru/api/contract",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
ЗапросGET = Новый HTTPЗапрос("/", ЗаголовокЗапроса);


и

HTTP = Новый HTTPСоединение("mysite.ru",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
ЗапросGET = Новый HTTPЗапрос("/api/contract/", ЗаголовокЗапроса);




Во избежании прочих "а как" ? Советую взять

https://github.com/vbondarevsky/Connector

Все примеры на русском, хотя... поможет ли это ?
3 program345
 
07.04.25
14:14
(2) сравнил

HTTP = Новый HTTPСоединение("mysite.ru/api/contract",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
ЗапросGET = Новый HTTPЗапрос("/", ЗаголовокЗапроса);



и

HTTP = Новый HTTPСоединение("mysite.ru",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
ЗапросGET = Новый HTTPЗапрос("/api/contract/", ЗаголовокЗапроса);


та же ошибка 500 (Internal Server Error).

Если убираю строку с аутентификацией (ЗаголовокЗапроса.Вставить("Authorization", "корректный пароль");) то ошибка уже 401.
4 программистище
 
07.04.25
14:18
(3) читаем (1), это шибка скрипта на который вы обращаетесь, на стороне сервера он не смог выполниться, и отдал ответ 500
5 Garykom
 
гуру
07.04.25
14:25
(3) тело ответа 500 какое?
обычно там в нормальных сервисах пишут что случилось
6 АгентБезопасной Нацио
 
07.04.25
14:25
Параметры Запроса от Заголовков запроса - отличаем?
7 Garykom
 
гуру
07.04.25
14:29
и уверен что parameters (inn, kpp) надо в заголовках запроса передавать?
может в строке (url) запроса?

ну типа
ЗапросGET = Новый HTTPЗапрос("/api/contract/?inn=...&kpp=...", ЗаголовокЗапроса);
8 vbus
 
07.04.25
15:07
HTTP = Новый HTTPСоединение("mysite.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
ЗапросGET = Новый HTTPЗапрос("/api/contract/", ЗаголовокЗапроса);
Так тоже ошибка?
9 timurhv
 
07.04.25
15:12
(0) Что в заголовках Authorization передается и должно передаваться по документации?
10 BaZZiL
 
07.04.25
15:28
Пробуйте отправить запрос из Postman.
Независимо от того, куда вы едете — это в гору и против ветра!