Подробная ошибка при вызове веб-службы BI Publisher из UTL_HTTP.GET_RESPONSE - PullRequest
0 голосов
/ 27 ноября 2018

Я вызываю xmlpserver / services / v2 / ReportService моего BI Publisher 11g из PL / SQL с UTL_HTTP для генерации отчета.Работает нормально.Но когда он находит ошибку (например, если я неправильно ввел путь к отчету), при вызове UTL_HTTP.GET_RESPONSE я получаю ORA-29269: ошибка 500 - Внутренняя ошибка сервера.

Повтор запроса стот же XML непосредственно в веб-сервис с использованием SoapUI, я получаю гораздо более подробный ответ:

<soapenv:Envelope 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>
      <soapenv:Fault>
         <faultcode>soapenv:Server.userException</faultcode>
         <faultstring>oracle.xdo.webservice.exception.OperationFailedException: PublicReportService::generateReport for reportAbsolutePath [path/report.xdo] failed: due to oracle.xdo.servlet.CreateException: Report definition not found:path/report.xdo [username=biuser]</faultstring>
         <detail>
            <oracle.xdo.webservice.exception.OperationFailedException/>
            <ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">bihost.mysite</ns1:hostname>
         </detail>
      </soapenv:Fault>
   </soapenv:Body>
</soapenv:Envelope>

Есть ли способ получить этот XML в качестве ответа на мой вызов?

Вот часть моего кода:

UTL_HTTP.SET_WALLET (v_ruta_wallet, v_passwd_wallet);
UTL_HTTP.SET_TRANSFER_TIMEOUT (timeout => 300);
v_http_req:= UTL_HTTP.BEGIN_REQUEST ( url          => v_url_ws,
                                      method       => 'POST',
                                      http_version => 'HTTP/1.1'
                                    );              
UTL_HTTP.SET_RESPONSE_ERROR_CHECK(TRUE);
UTL_HTTP.SET_DETAILED_EXCP_SUPPORT(TRUE);
UTL_HTTP.SET_BODY_CHARSET(v_http_req, 'ISO-8859-1');              
UTL_HTTP.SET_HEADER(v_http_req, 'Content-Type', 'text/xml');
UTL_HTTP.SET_HEADER(v_http_req, 'Content-Length', LENGTH(v_peticio_XML));
UTL_HTTP.SET_HEADER(v_http_req, 'SOAPAction', '""');    
UTL_HTTP.WRITE_TEXT(v_http_req, v_peticio_XML); 
-- So here I get the ORA-29269 exception
v_http_resp:= UTL_HTTP.GET_RESPONSE(v_http_req);

Заранее спасибо.

...