Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Http запрос мобильное приложение

Http запрос мобильное приложение
Я
   rkorsak
 
16.07.20 - 10:56
День добрый.
Есть мобильное приложение на платформе 8.3.16. Отправляет get запрос через apache 2.2 в ут 10.3 внутри локальной сети.
Обнаружилась следующая проблема:
Мобильное приложение отправляет первый запрос без авторизации, приходит отает 401. Сразу же следующий отправляет с авторизацией, приходит ответ 200

GET /trade/hs/obmen/Product/getProduct HTTP/1.1
User-Agent: 1C+Enterprise/8.3
Host: 192.168.1.22:1891
Connection: Keep-Alive
Accept-Encoding: gzip

HTTP/1.1 401 Unauthorized
Date: Wed, 15 Jul 2020 05:46:39 GMT
Server: Apache/2.2.6 (Win32)
WWW-Authenticate: Basic realm="1C:Enterprise 8.3"
Content-Length: 0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/plain

GET /trade/hs/obmen/Product/getProduct HTTP/1.1
User-Agent: 1C+Enterprise/8.3
Authorization: Basic 0JDQtNC80LjQvdC40YHRgtCw0YDRgtC+0YA6NjY0NjkxNQ==
Host: 192.168.1.22:1891
Connection: Keep-Alive
Accept-Encoding: gzip

HTTP/1.1 200 OK
Date: Wed, 15 Jul 2020 05:46:39 GMT
Server: Apache/2.2.6 (Win32)
Content-Length: 260825
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Type: text/x-json

Текст кода
ЗапросХТТП = Новый HTTPЗапрос(Настройки.Публикация + "/hs/obmen/Product/getProduct");
Соединение = Новый HTTPСоединение(Настройки.Адрес, Настройки.Порт, Настройки.Логин, Настройки.Пароль);
Ответ = Соединение.Получить(ЗапросХТТП);


Может кто сталкивался?
   Garykom
 
1 - 16.07.20 - 11:06
Закомментируй указанный код с авторизацией и запусти свое приложение - 99% что там еще есть код который и делает первый запрос
   Garykom
 
2 - 16.07.20 - 11:09
Ну или вариант не используй встроенную в 1С возможность авторизации Basic
Т.е. логин и пароль не указываешь а просто свой заголовок вставляешь
"Authorization" с нужной строкой "Basic 0JDQtNC80LjQvdC40YHRgtCw0YDRgtC+0YA6NjY0NjkxNQ=="
Это "Basic "+base64(логин+":"+пароль)
   rkorsak
 
3 - 17.07.20 - 11:54
(1) точно нет. По отладке иду и смотрю через сниффер запросы. При  Соединение.Получить(ЗапросХТТП) отправляет запрос без авторизации приходит 401 и сразу с авторизацией
   rkorsak
 
4 - 17.07.20 - 11:56
(2) Помогло. Спасибо.
        Поток  = Новый ПотокВПамяти;
    ЗаписьТекста = Новый ЗаписьТекста(Поток) ;
    ЗаписьТекста.Записать(Логин+":"+Пароль);
    ЗаписьТекста.Закрыть();
    ДвоичныеДанные = Поток.ЗакрытьИПолучитьДвоичныеДанные();
    Строка64 = Base64Строка(ДвоичныеДанные);
    
    СтрокаАвторизации = "Basic "+Строка64;
   Garykom
 
5 - 17.07.20 - 11:58
(4) Можно без файловых операций и не учел кодировку, что важно если логин или пароль кириллица

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.