Soap com webservice wsdl

17/04/2014

0

Ola Pessoal.

Estou tentando executar via soap umas funções que estão em um webservice wsdl. A autenticação desse ws fica no header. Já tentei de várias formas e maneiras, utilizando vários exemplos da web mas não funciona.

O xml deve ser enviado em um formato específico, conforme mostro abaixo:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/"> 
   <soap:Header> 
      <tem:Autenticacao> 
         <tem:Login>xxxxx</tem:Login> 
         <tem:Senha>xxxxx</tem:Senha> 
         <tem:Codigo>x</tem:Codigo> 
      </tem:Autenticacao> 
   </soap:Header> 
   <soap:Body> 
      <tem:RecuperarAgenda> 
         <tem:CODIGO_CFC>2</tem:CODIGO_CFC> 
         <tem:DATA>27/03/2014</tem:DATA> 
      </tem:RecuperarAgenda> 
   </soap:Body> 
</soap:Envelope> 


E este é o código(uma das formas) que estou tentando utilizar no delphi:

procedure TForm2.Button4Click(Sender: TObject); 
var 
 Rio  : THTTPRIO; 
 autent: Autenticacao; 
begin 
   Rio := THttpRIO.Create(nil); 

   autent := Autenticacao.Create; 
   autent.Login := 'xxxxx'; 
   autent.Senha := 'xxxxx'; 
   autent.Codigo := 'x'; 
   Rio.SOAPHeaders.Send(autent); 
  resultado := GetIntegracaoCadastroHttpGet.RecuperarAgenda('27/03/2014'); 
  ShowMessage(resultado); 

end; 


Sempre recebo o retorno: "server did not recognize the value of http header soapaction", como se eu não estivesse enviando o header.

Agradeço se alguém puder me ajudar.
Obrigado desde já.
Henry Maltz

Henry Maltz

Responder

Posts

22/04/2014

Henry Maltz

Pessoal, ninguém sabe me ajudar?
Responder

30/04/2014

Gledstonprego

você ainda precisa de ajuda?
Responder

30/04/2014

Gledstonprego

caso ainda esteja com o problema coloque uma rotina pra pegar o layout do soap que você esta enviando no componente HTTPRIO

assim:
coloque dois memos e declare em uses XmlDoc

procedure TForm1.HTTPRIO1BeforeExecute(const MethodName: String;
var SOAPRequest: WideString);
var xml : TStringlist;
begin
xml := TStringlist.create;
try
mmRequest.Text:= SOAPRequest;
finally
xml.Free;
end;
end;

e na recepção:
procedure TForm1.HTTPRIO1AfterExecute(const MethodName: String;
SOAPResponse: TStream);
var xml : TStringlist;
begin
xml := TStringlist.create;
try
soapresponse.Position:=0;
xml.LoadFromStream(SOAPResponse);
mmResponse.Text:= xmlDoc.FormatXMLData(xml.Text);
finally
xml.Free;
end;
end;

Responder

30/04/2014

Henry Maltz

Ola, tudo bem?

Te agradeço muito pela ajuda... Eu já resolvi o problema. Na realidade, o problema era que o usuário que a empresa criou tinha erro e não funcionava. Só fui descobrir isso pq eles limparam a base, dai ele me deu outro usuário e simplesmente passou a funcionar.

Mas novamente te agradeço, pois na época eu postei em 3 sites de fórum diferentes e não recebi nenhum retorno.

Um abraço.
Responder

06/07/2014

Marcos Cruz

ola pessoal, podem alguém me ajudar.
estou fazendo integração com empresa de enviar sms, ate ja envia o problema e retorno por exemplo consultar sms lidos, respondidos e que retorno nao retorna so variável ele retorna tipo Dataset e nao e como eu leu isso? alguem sabe?

segue links
http://webservices.twwwireless.com.br/reluzcap/wsreluzcap.asmx?WSDL
http://webservices.twwwireless.com.br/reluzcap/

função é a StatusSMSNaoLido
quero pegar esse retorno que é dataset e abrir no clientdataset alguem sabe?
Responder

06/07/2014

Marcos Cruz

ola pessoal, podem alguém me ajudar.
estou fazendo integração com empresa de enviar sms, ate ja envia o problema e retorno por exemplo consultar sms lidos, respondidos e que retorno nao retorna so variável ele retorna tipo Dataset e nao e como eu leu isso? alguem sabe?

segue links
http://webservices.twwwireless.com.br/reluzcap/wsreluzcap.asmx?WSDL
http://webservices.twwwireless.com.br/reluzcap/

função é a StatusSMSNaoLido
quero pegar esse retorno que é dataset e abrir no clientdataset alguem sabe?
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar