Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / utl_http русские буквы при первом вызове рест-апи заменяются на U+fffd / 2 сообщений из 2, страница 1 из 1
01.12.2021, 18:39
    #40116508
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
utl_http русские буквы при первом вызове рест-апи заменяются на U+fffd
отправляю на сервер запрос с кириллицей
при первом вызове в сессии кириллица доходит до рест-апи в виде символа U+fffd (65533), и кириллическая часть ответа тоже возвращается нечитаемой
при всех следующих вызовах в той же сессии с теми же параметрами кириллица доходит в обе стороны в нормальном виде


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
************
   -- v_xmlRequest тут json с русскими буквами. Тип Varchar2

    Utl_http.Set_transfer_timeout(60);

    l_req := Utl_http.Begin_request(url => v_url, METHOD => 'POST', http_version => 'HTTP/1.1');

    Utl_http.Set_header(r => l_req, NAME  => 'user-agent',   VALUE => 'mozilla/4.0');
    Utl_http.Set_header(r => l_req, NAME  => 'Content-Type', VALUE => 'application/json');
    -- 17-08-2020
    Utl_http.Set_header(r => l_req, NAME  => 'charset',      VALUE => 'utf-8');
    Utl_http.Set_body_charset('utf-8');
   
    l_i := LENGTH(v_xmlRequest);
    Utl_http.Set_header(l_req,
                        'Content-Length',
                        -- VALUE => LENGTHB(v_xmlRequest)
                        -- VALUE => l_i + 15
                        LENGTH(CONVERT(v_xmlRequest, 'UTF8')) -- 18-11-2021
                       );


    ps    := 1;
    l_amt := 48;
    LOOP
        Utl_http.Write_text(l_req, SUBSTR(v_xmlRequest, ps, l_amt));
        ps := ps + l_amt;
        IF ps > l_i THEN
            EXIT;
        END IF;

    END LOOP;

    l_resp := Utl_http.Get_response(l_req);

************


PARAMETERVALUESESS/dbNLS_LANGUAGERUSSIANsessNLS_DATE_LANGUAGERUSSIANsessNLS_SORTRUSSIANsessNLS_COMPBINARYsessNLS_LENGTH_SEMANTICSBYTEsessNLS_NCHAR_CONV_EXCPFALSEsessNLS_LANGUAGEAMERICANdbNLS_TERRITORYAMERICAdbNLS_CHARACTERSETRU8PC866dbNLS_SORTBINARYdbNLS_COMPBINARYdbNLS_LENGTH_SEMANTICSBYTEdbNLS_NCHAR_CONV_EXCPFALSEdbNLS_NCHAR_CHARACTERSETAL16UTF16dbNLS_RDBMS_VERSION11.2.0.4.0db
...
Рейтинг: 0 / 0
01.12.2021, 18:56
    #40116510
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
utl_http русские буквы при первом вызове рест-апи заменяются на U+fffd
перенес строку Utl_http.Set_body_charset('utf-8');
поставил перез созданием запроса l_req := Utl_http.Begin_request(url => v_url, METHOD => 'POST', http_version => 'HTTP/1.1');
русские буквы появились сразу
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / utl_http русские буквы при первом вызове рест-апи заменяются на U+fffd / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]