Member 14861859 Ответов: 0

Как исправить получение нечитаемых символов в ответе utl_http с помощью базы данных oracle ?


I'm using oracle 19c database character set AR8MSWIN1256 ON WINDOWS 
and tried on another database where character set is AMERICAN_AMERICA.AL32UTF8 
I used utl_http to get a soap response but I am getting invalid characters
this is the response

<pre>  ?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><xrsi:h2h-das-reply xmlns:xrsi="http://www.westernunion.com/schema/xrsi"><MTML><REPLY HOST="AUHOST" CLIENT="WUCLIENT"

    TYPE=""><DATA_CONTEXT><HEADER><ACCOUNT_NUM>AJX129993</ACCOUNT_NUM><DATA_MORE>N</DATA_MORE><DATA_NUM_RECS>56</DATA_NUM_RECS><NAME>GetStateList</NAME><FSID>WGHHJOI390T</FSID><COUNTER_ID>JOI39ARP001D</COUNTER_ID><TERM_ID>WAQt</TERM_ID></HEADER><RECORDSET><GETSTATELIST><STATE_CODE>AL</SaR?EA9????????AB{q?kJt4

    ??/Bh??Y???p????^?H?4%??p????d?mY;J?g?????w?<??@?????7?kQ???$???h+?zpS????{~*????o8/9?????p#?IK?8e?S?8?a????????+?k@???H???#???_??}U???W)????I??s^    .?"?`????M??????? ?ZsS?>?c??????[?0[?G[??4???s/%}?vi*9?$~????0?????l?d???????LFF"???????_A?F-Qs%??



это мой plsql код:
объявлять
url varchar2(2000):='https://wugateway2pi.westernunion.net';
корпус varchar2(32000):='
&ЛТ;soapenv:конверт префиксом xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" атрибутов xmlns:xrsi="http://www.westernunion.com/schema/xrsi" атрибутов xmlns:xsi в="http://www.w3.org/2001/XMLSchema-instance"&ГТ;
<soapenv:header><soapenv:body><xrsi:h2h-das-request><channel><type>H2H<name>abc
<версия>141<foreign_remote_system><идентификатор>xyz
<reference_no>1213<counter_id>xyz
в <имя>GetStateList&ЛТ;фильтры&ГТ;&ЛТ;queryfilter1&ГТ;Ан
<queryfilter2>US';
Треб UTL_HTTP.Треб;
респ UTL_HTTP.Респ;
myclob типа CLOB;
бафф varchar2(32767);
начать
UTL_HTTP.set_wallet('file:D:\wallet',null);
utl_http.SET_BODY_CHARSET('utf-8');
UTL_HTTP.SET_TRANSFER_TIMEOUT(120);
req:= UTL_HTTP.BEGIN_REQUEST(url, 'POST');
UTL_HTTP.SET_HEADER (Треб,'тип содержимого','текст/XML;chartset=кодировка UTF-8');
UTL_HTTP.SET_HEADER (req,'Content-Length',lengthb(body));
UTL_HTTP.WRITE_TEXT (заявка,тело);
resp:=UTL_HTTP.GET_RESPONSE(req);
-----------
DBMS_LOB.createtemporary(myclob, FALSE);
НАЧАТЬ
ПЕТЛЯ
UTL_HTTP.READ_TEXT(resp, buff, 1000);
dbms_output.put_line ("Буфф");
DBMS_LOB.WRITEAPPEND(myclob, length(buff), buff);
КОНЦЕВАЯ ПЕТЛЯ;
UTL_HTTP.END_RESPONSE(resp);
ИСКЛЮЧЕНИЕ
КОГДА UTL_HTTP.END_OF_BODY ТОГДА
UTL_HTTP.END_RESPONSE(resp);
КОНЕЦ;
dbms_output.put_line(myclob);
DBMS_LOB.freetemporary(myclob);
конец;
/


возможно ли, чтобы речь шла об ошибках расшифровки, потому что этот сайт использует взаимную аутентификацию
и использовать закрытый ключ ?

Что я уже пробовал:

I tried convert function but no success
l_text:=convert(l_text,'AR8MSWIN1256','AL32UTF8');
I tried to  set the header :
utl_http.set_header(http_req, 'Content-Type', 'text/xml; charset=utf-8');
utl_http.set_header(http_req, 'Content-Type', 'application/xml; charset=utf-8');
utl_http.set_header(http_req, 'Content-Type', 'application/soap+xml;charset=UTF-8');
utl_http.set_header(http_req, 'Content-Type', 'text/xml');
no success

0 Ответов