Estou consumindo um WebService via UTL_HTTP, porem este WebService retorna apenas:
Server was unable to process request. ---> Object reference not set to an instance of an object.
Este mesmo WebService é consumido normalmente pelo VisualStudio e via JavaScript num bloco HTTP.
Por favor, vocês poderiam me ajudar? Abaixo segue a Procedure que uso para consumir o WebService.
CREATE OR REPLACE PROCEDURE PRC_WS_SUBGRUPO (p_codigoGrupo IN char,
p_codigoSubGrupo in varchar2,
p_descricao IN varchar2,
p_descricaoCompleta IN varchar2,
p_unidadeMedida IN varchar2,
p_language IN varchar2,
p_Result OUT clob,
p_XML OUT clob) IS
req UTL_HTTP.req := NULL;
resp UTL_HTTP.resp := NULL;
respVal CLOB;
reqXML VARCHAR2(32760);
Tag_Result XMLTYPE;
BEGIN
req := UTL_HTTP.begin_request('http://satger:8010/Service.asmx', 'POST');
-- dados XML
reqXML := '<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<SalvarSubGrupo xmlns="http://tempuri.org/">
<xmlDocument>
<subgrupo>
<codigo>'||p_codigoSubGrupo||'</codigo>
<grupo>'||p_codigoGrupo||'</grupo>
<descricao>'||p_descricaoCompleta||'</descricao>
<descricaofamilia>'||p_descricao||'</descricaofamilia>
<ativo>1</ativo>
<unidade>'||p_unidadeMedida||'</unidade>
</subgrupo>
</xmlDocument>
</SalvarSubGrupo>
</soap:Body>
</soap:Envelope>';
p_XML := reqXML;
UTL_HTTP.set_header(req, 'Content-Type', 'text/xml'); /*Estabelece conteudo em XML */
UTL_HTTP.set_header(req, 'SOAPAction', '"http://satger:8010/SalvarSubGrupo"'); /*Estabelece Conexao SOAP */
UTL_HTTP.set_header(req, 'Content-Length', LENGTH(reqxml)); /*Indica no Cabecalho o Tamanho do Documento XML*/
UTL_HTTP.write_text(req, reqxml); /*Escreve o corpo do XML */
resp := UTL_HTTP.get_response(req); /*Obtem a Resposta */
UTL_HTTP.read_text(resp, respVal); /*Carrega na variavel respVal a devolucao do servidor*/
UTL_HTTP.end_response(resp); /*Finaliza a Conexao HTTP*/
Tag_Result := xmltype(respVal);
/*Get the string of SalvaSubGrupoResult Tag or faultstring Tag*/
BEGIN
p_Result := xmltype.getCLOBVal(xmltype.extract(Tag_Result, '//SalvarSubGrupoResult/text()'));
EXCEPTION
when others then -- general error on WebServiceResponse
p_Result := xmltype.getCLOBVal(xmltype.extract(Tag_Result, '//faultstring/text()'));
END;
--p_Result := to_clob(LENGTH(reqxml));--respVal;
EXCEPTION
WHEN UTL_HTTP.end_of_body THEN
UTL_HTTP.end_response(resp);
END;