Consumir WebService via UTL_HTTP

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
rconstantino
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qua, 25 Ago 2010 3:34 pm
Localização: São Paulo - SP
Att,
Rodrigo Constantino

Pessoal, por favor. Preciso de uma ajuda urgente.

Estou consumindo um WebService via UTL_HTTP, porem este WebService retorna apenas:

Selecionar tudo

Server was unable to process request. ---> Object reference not set to an instance of an object.
Pensei que pudesse ser problema de conexao, mas consigo conectar no WebService e chamar o serviço correto (no caso o SalvarSubGrupo).

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.

Selecionar tudo

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;
rconstantino
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qua, 25 Ago 2010 3:34 pm
Localização: São Paulo - SP
Att,
Rodrigo Constantino

Pessoal, estou fazendo um novo teste, agora usando a package SOAP_API, contudo ainda estou recebendo o mesmo erro do webservice:

Selecionar tudo

Server was unable to process request. ---> Object reference not set to an instance of an object.
Alguém já viu isso antes?
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante