Ошибка при вызове Rest Webservice с использованием UTL_HTTP в Oracle PLSQL - PullRequest
0 голосов
/ 12 ноября 2018

Я получаю сообщение об ошибке ниже при вызове службы отдыха с использованием utl_http.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">

<HTML><HEAD><TITLE>Bad Request</TITLE>

<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>

<BODY><h2>Bad Request</h2>

<hr><p>HTTP Error 400. The request is badly formed.</p>

</BODY></HTML>

URL: https://hostname/svc/snservice-consolidation/v2.0/api/sn/GetSNDetails?Out=CAE&Mode=XML

Псевдокод:

 UTL_HTTP.set_wallet (
  'file:/var/opt/oracle/wallets/........',
  'xxxxxxx');

l_url :='https://<hostname>/svc/snservice-consolidation/v2.0/api/sn/GetSNDetails?Out=CAE'
  || CHR (38)
  || 'Mode=XML';

l_http_request := UTL_HTTP.begin_request (l_url, 'POST', 'HTTPS/1.1');


UTL_HTTP.set_authentication (l_http_request,'UN','PWD');

p_req_clob := TO_CLOB ('<root>
                       <Device SerialNumber="AAAAAAAAAA"/>
                       </root>'
                       );

UTL_HTTP.set_header (l_http_request, 'Content-Type', 'text/xml');
UTL_HTTP.set_header (l_http_request,
                    'Content-Length',
                    LENGTH (p_req_clob));
UTL_HTTP.write_text (l_http_request, p_req_clob);
l_http_response := UTL_HTTP.get_response (l_http_request);

Дополнительные примечания:

  1. Тот же веб-сервисотлично работает в остальных клиентах, таких как Postman
  2. Тот же код бэкэнда отлично работает для другой подобной службы, которая принимает тот же ввод данных.

Благодарим за любую помощь по этому вопросу.Заранее спасибо.

С уважением, Чарльз

Ответы [ 2 ]

0 голосов
/ 22 марта 2019

Попробуйте с этим:

l_http_request := UTL_HTTP.begin_request (l_url, 'POST', 'HTTP/1.1');
0 голосов
/ 13 ноября 2018

Возможно проблема с цитированием, попробуйте это:

    res XMLTYPE;
BEGIN

    SELECT  
        XMLELEMENT("root", 
            XMLELEMENT("Device", XMLATTRIBUTES('AAAAAAAAAA' AS "SerialNumber")))
    INTO res
    FROM dual;
    p_req_clob := res.GetClobVal();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...