как убрать заголовок в ответе utl_http.read_text в оракуле - PullRequest
0 голосов
/ 15 мая 2018

Нужна помощь в удалении заголовков из UTL_HTTP.read_text.sorry, чтобы напрямую ответить на мои сомнения.

У меня есть код, где я пытаюсь подключить WSDL из программы pl / sql В моем коде я использовал UTL_HTTP.read_text вместо UTL_HTTP.READ_LINE.

UTL_HTTP.read_text(l_http_resp,l_text,32767);
DBMS_LOB.writeappend (l_ws_response, LENGTH(l_text), l_text);

Read_line:

utl_http.read_line(l_http_resp, l_ws_response);

Причина, по которой я выбрал read_text вместо read_line, заключается в том, что запрос, который был передан в UTL_http, содержит больше данных, чем предел varchar2, и он работал, когда я использовал read_text вместо read_line (как предложено ASK TOM).

Теперь, когда я использую read_text, к заголовку добавляется ответ.

Пример вывода, когда я использую read_text

*** Печать заголовка из ответа

Connection: close
Date: Tue, 15 May 2018 08:55:12 GMT
Transfer-Encoding: chunked
Content-Type: text/xml;charset="utf-8"
X-Powered-By: Servlet/2.5 JSP/2.1

** Распечатать подробности из ответа - 08: 55: 14.319

 Servlet/2.5 JSP/2.1<?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">...

Перед началом xml текст "Servlet / 2.5 JSP / 2.1" соглашается с xml-ответом, но когда я использую read_line, я получаю только read_line, как удалить заголовок из ответ.

1 Ответ

0 голосов
/ 15 мая 2018

Чтобы читать более длинные строки из веб-сервиса, я использую этот код:

   l_http_request    UTL_HTTP.REQ;
   l_http_response   UTL_HTTP.RESP;
   BUFFER   VARCHAR2(32767);
   l_response_clob   CLOB;
    xml XMLTYPE;

BEGIN

    ...
    l_http_response := UTL_HTTP.GET_RESPONSE(l_http_request);

    DBMS_LOB.CREATETEMPORARY(l_response_clob, TRUE, DBMS_LOB.CALL);
    DBMS_LOB.OPEN(l_response_clob, DBMS_LOB.LOB_READWRITE);

    BEGIN
    LOOP
        UTL_HTTP.READ_TEXT(l_http_response, BUFFER, 32767);
        DBMS_LOB.WRITEAPPEND(l_response_clob, LENGTH(BUFFER), BUFFER);
    END LOOP;
    EXCEPTION
        WHEN UTL_HTTP.END_OF_BODY THEN
            UTL_HTTP.END_RESPONSE(l_http_response);
    END;
    DBMS_LOB.CLOSE(l_response_clob);

    xml := XMLTYPE(l_response_clob);
    ... do whatever you need with XML docuemnt

    DBMS_LOB.FREETEMPORARY(l_response_clob);

END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...