powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle SoapApi
10 сообщений из 10, страница 1 из 1
Oracle SoapApi
    #39947216
Mr.Brown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята, такой вопрос, используется для работы в сервисами данный пакет.
Один сервис после обновления начал добавлять в ответ UTF

Можно utl_http.read_text обрабатывать UTF

soap_api.invoke в l_http_response прилетает такой ответ , его часть ниже
open=F, temp=F, length=1239, chunksize=4000, data= < s:Envelope xmlns:xsd=" http://www.w3.org

И вот этот кусок data=< ломает весь xmltype.createxml(l_envelope_cl)
Пока в качестве заплатки указали l_envelope_cl :=replace(l_envelope_cl,'<','<');
Вот пример кода

Begin
Loop
utl_http.read_text(l_http_response, l_envelope, 32767);
l_envelope_cl := l_envelope_cl || l_envelope;
End Loop;
Exception
When utl_http.end_of_body Then
utl_http.end_response(l_http_response);
End;
l_envelope_cl :=replace(l_envelope_cl,'<','<');
show_envelope(l_envelope_cl, 'Response');
p_org_response := l_envelope_cl;
l_response.doc := xmltype.createxml(l_envelope_cl);
l_response.envelope_tag := p_request.envelope_tag;
...
Рейтинг: 0 / 0
Oracle SoapApi
    #39947246
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.Brown
Можно utl_http.read_text обрабатывать UTF
БД работает со строками в кодировке БД.
...
Рейтинг: 0 / 0
Oracle SoapApi
    #39947384
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.Brown
Ребята, такой вопрос, используется для работы в сервисами данный пакет.
Один сервис после обновления начал добавлять в ответ UTF

Можно utl_http.read_text обрабатывать UTF

soap_api.invoke в l_http_response прилетает такой ответ , его часть ниже
open=F, temp=F, length=1239, chunksize=4000, data= < s:Envelope xmlns:xsd=" http://www.w3.org

И вот этот кусок data=< ломает весь xmltype.createxml(l_envelope_cl)
Пока в качестве заплатки указали l_envelope_cl :=replace(l_envelope_cl,'<','<');
Вот пример кода

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Begin
      Loop
        utl_http.read_text(l_http_response, l_envelope, 32767);
        l_envelope_cl := l_envelope_cl || l_envelope;
      End Loop;
    Exception
      When utl_http.end_of_body Then
        utl_http.end_response(l_http_response);
    End;
    l_envelope_cl           :=replace(l_envelope_cl,'&#239;»&#191;<','<');
    show_envelope(l_envelope_cl, 'Response');
    p_org_response          := l_envelope_cl;
    l_response.doc          := xmltype.createxml(l_envelope_cl);
    l_response.envelope_tag := p_request.envelope_tag;

Для оформления кода на этом форуме используйте, пожалуйста, тэг SRC.
...
Рейтинг: 0 / 0
Oracle SoapApi
    #39951207
Mr.Brown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Begin
Loop
utl_http.read_text(l_http_response, l_envelope, 32767);
l_envelope_cl := l_envelope_cl || l_envelope;
End Loop;
Exception
When utl_http.end_of_body Then
utl_http.end_response(l_http_response);
End;
l_envelope_cl :=replace(l_envelope_cl,'&#239;»&#191;,'<');
show_envelope(l_envelope_cl, 'Response');
p_org_response := l_envelope_cl;
l_response.doc := xmltype.createxml(l_envelope_cl);
l_response.envelope_tag := p_request.envelope_tag;
...
Рейтинг: 0 / 0
Oracle SoapApi
    #39951208
Mr.Brown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL*Plus
Mr.Brown
Ребята, такой вопрос, используется для работы в сервисами данный пакет.
Один сервис после обновления начал добавлять в ответ UTF

Можно utl_http.read_text обрабатывать UTF

soap_api.invoke в l_http_response прилетает такой ответ , его часть ниже
open=F, temp=F, length=1239, chunksize=4000, data= < s:Envelope xmlns:xsd=" http://www.w3.org

И вот этот кусок data=< ломает весь xmltype.createxml(l_envelope_cl)
Пока в качестве заплатки указали l_envelope_cl :=replace(l_envelope_cl,'<','<');
Вот пример кода

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Begin
      Loop
        utl_http.read_text(l_http_response, l_envelope, 32767);
        l_envelope_cl := l_envelope_cl || l_envelope;
      End Loop;
    Exception
      When utl_http.end_of_body Then
        utl_http.end_response(l_http_response);
    End;
    l_envelope_cl           :=replace(l_envelope_cl,'&#239;»&#191;<','<');
    show_envelope(l_envelope_cl, 'Response');
    p_org_response          := l_envelope_cl;
    l_response.doc          := xmltype.createxml(l_envelope_cl);
    l_response.envelope_tag := p_request.envelope_tag;

Для оформления кода на этом форуме используйте, пожалуйста, тэг SRC.


ок, сорян
...
Рейтинг: 0 / 0
Oracle SoapApi
    #39952275
Mr.Brown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mr.Brown,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    utl_http.set_header(l_http_request, 'Content-Type', 'text/xml');
    utl_http.set_header(l_http_request, 'Content-Length', lengthb(l_envelope));
    utl_http.set_header(l_http_request, 'SOAPAction', p_action);
    --utl_http.write_text(l_http_request, l_envelope);
    utl_http.write_raw(l_http_request, utl_raw.cast_to_raw(l_envelope));
    l_http_response := utl_http.get_response(l_http_request);

    
    Begin
      Loop
        --utl_http.read_raw( (l_http_response, l_envelope, 32767);
        utl_http.read_text(l_http_response, l_envelope, 32767);
        l_envelope_cl := l_envelope_cl || l_envelope;
      End Loop;
    Exception
      When utl_http.end_of_body Then
        utl_http.end_response(l_http_response);
    End;
    l_envelope_cl           :=replace(l_envelope_cl,'&#239;»&#191;<','<'); --Cap.America QUL_HM iz za utf prishlos postavit zaplatku
    show_envelope(l_envelope_cl, 'Response');
    p_org_response          := l_envelope_cl;
    l_response.doc          := xmltype.createxml(l_envelope_cl);



У меня проблема в том в XML potom poyavlyutsya takie simvoli <ValueRu>Код абонента</ValueRu>

Как преобразовать ответ и правильно отображать
...
Рейтинг: 0 / 0
Oracle SoapApi
    #39952312
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.Brown
Как преобразовать ответ и правильно отображать

У Вас какая кодировка БД?
Дело в том, что приведенный Вами фрагмент
Код: plsql
1.
<ValueRu>Код абонента</ValueRu>


в русской кодировке win1251, отображенный как win1252 .
Если кодировка БД действительно cl8mswin1252, то адекватно работать с русскими текстами в ней не получится - придется уходить на на N*CHAR или заводить БД с более подходящей кодировкой.
...
Рейтинг: 0 / 0
Oracle SoapApi
    #39952335
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нагнал про 1251->1252, это UTF-8, отображенная как 1252, но все равно интересна кодировка БД, кодировка клиента (ОС) и кодировка, заказанная в NLS_LANG.
...
Рейтинг: 0 / 0
Oracle SoapApi
    #39952341
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.
...
Рейтинг: 0 / 0
Oracle SoapApi
    #39952355
Mr.Brown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous,

вопрос решил utl_http.set_header(l_http_request, 'Content-Type', 'text/xml;charset=UTF-8');
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle SoapApi
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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