Soap com webservice wsdl
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:
E este é o código(uma das formas) que estou tentando utilizar no delphi:
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á.
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
Curtidas 0
Respostas
Henry Maltz
17/04/2014
Pessoal, ninguém sabe me ajudar?
GOSTEI 0
Gledstonprego
17/04/2014
você ainda precisa de ajuda?
GOSTEI 0
Gledstonprego
17/04/2014
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;
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;
GOSTEI 0
Henry Maltz
17/04/2014
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.
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.
GOSTEI 0
Marcos Cruz
17/04/2014
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?
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?
GOSTEI 0
Marcos Cruz
17/04/2014
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?
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?
GOSTEI 0