Como pegar o retorno de uma chamada HTTP? - XML
Pessoal tenho que chamar dentro do meu programa um HTTP para efetuar uma transação. Essa HTTP retorna um XML, chama o HTTP é simples agora quero saber como pego esse retorno XML
Isso retorna um XML assim:
Como vocês fariam para chamar esse URL e pegar esse retorno.
Obrigado
https://conta.brtecno.com/clx/ sendsms.php?username=xxxxxxxxxx&pa ssword=xxxxxxxxxx&from=xxxxxxxxxx& to=xxxxxxxxxx&valuet=xxxxxxxxxx
Isso retorna um XML assim:
Successfull: <?xml version="1.0" encoding="utf-8" ?> - <PriceResponse> <version>1</version> <result>1</result> <resultstring>success</resultstring> <description /> <endcause /> </PriceResponse>
Como vocês fariam para chamar esse URL e pegar esse retorno.
Obrigado
Yallebr
Curtidas 0
Melhor post
Janbaceiredo
19/09/2008
Se vc estiver usando o WebBrower vc pode pegar o codigo HTML de retorno.
É assim que eu faço com a Receita Federal e Sintegra, jogando essas informações automaticamente no banco de dados.
Uma forma de realizar seria:
1º Coloque um TWebBrower
2º Um Memo
3º Um Botao
4º Declara a Uses mshtml;
Dessa forma vc pode realizar um pesquisa pela string de retorno do HTML.
Mais seria interessante analisar o codido do Luciano. Estou tentando fazer ele funcionar mais ate o momento sem sucesso na alteração da Indy.
Valeu T+.
É assim que eu faço com a Receita Federal e Sintegra, jogando essas informações automaticamente no banco de dados.
Uma forma de realizar seria:
1º Coloque um TWebBrower
2º Um Memo
3º Um Botao
4º Declara a Uses mshtml;
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, SHDocVw, mshtml;
type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate(´https://myaccount.12voip.com/clx/sendsms.php?username=janbaceiredo&password=280000&from=551897950649&to=551897950649&text=xxxxxxxxxx´);
end;
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
sHTML : IHTMLElement;
Teste: String;
begin
sHTML:= (WebBrowser1.Document AS IHTMLDocument2).body;
while sHTML.parentElement <> nil do
begin
sHTML := sHTML.parentElement;
end;
Teste:= UpperCase(sHTML.outerHTML);
Memo1.Text:= Teste;
end;
end.
Dessa forma vc pode realizar um pesquisa pela string de retorno do HTML.
Mais seria interessante analisar o codido do Luciano. Estou tentando fazer ele funcionar mais ate o momento sem sucesso na alteração da Indy.
Valeu T+.
GOSTEI 1
Mais Respostas
Janbaceiredo
30/08/2008
Ai colega blz...
Bom vejamos se eu entendi.
Vc quer acessar uma pagina fazendo auto-login. Apos logar, o sistema irá retornar um XML para voce.
Voce quer capturar esse XML na sua aplicacao?
É isso mesmo que vc quer???
Se for poderiamos estar usando o componente TWebBrowser com algumas funções.
Bom vejamos se eu entendi.
Vc quer acessar uma pagina fazendo auto-login. Apos logar, o sistema irá retornar um XML para voce.
Voce quer capturar esse XML na sua aplicacao?
É isso mesmo que vc quer???
Se for poderiamos estar usando o componente TWebBrowser com algumas funções.
GOSTEI 0
Yallebr
30/08/2008
Olá amigo,
Isso mesmo. O que não consegui foi pegar isso do TWebBrowser. Poderia me dar um exemplo?
Isso mesmo. O que não consegui foi pegar isso do TWebBrowser. Poderia me dar um exemplo?
GOSTEI 0
Janbaceiredo
30/08/2008
Vamos por parte então.
Qual seria o endereço que vc esta tentando acessar???
Vc pode passar para eu fazer um exemplo para vc?
Qual seria o endereço que vc esta tentando acessar???
Vc pode passar para eu fazer um exemplo para vc?
GOSTEI 0
Janbaceiredo
30/08/2008
Outra questao é: Como vc esta fazendo esse acesso.
Quais os componentes?
Quais os componentes?
GOSTEI 0
Diegotiemann
30/08/2008
Pessoal estou tentando resolver umproblema parecido.
Tenho um sistema para gerência de escritórios de advogacia,
osistema esta bem completo mas já estou pesquisando a meses como fazer um esquema de validação,ou seja jogar a imagem de validação do site num TImage e mostar-lá ao meu usuário dai ele pode fazero acompanhamento processual direto pelo meu programa e ainda consigo importar os processos para o BD do meu programa.
O site é esse:
http://www.tj.rs.gov.br/site_php/consulta/index.php
Tenho um sistema para gerência de escritórios de advogacia,
osistema esta bem completo mas já estou pesquisando a meses como fazer um esquema de validação,ou seja jogar a imagem de validação do site num TImage e mostar-lá ao meu usuário dai ele pode fazero acompanhamento processual direto pelo meu programa e ainda consigo importar os processos para o BD do meu programa.
O site é esse:
http://www.tj.rs.gov.br/site_php/consulta/index.php
GOSTEI 0
Yallebr
30/08/2008
Posso sim.
A URL é essa:
Estou usando TWebBrowser e apenas executando essa URL.
Abração
A URL é essa:
https://myaccount.12voip.com/clx/sendsms.php?username=xxxxxxxxxx&password=xxxxxxxxxx&from=xxxxxxxxxx&to=xxxxxxxxxx&text=xxxxxxxxxx
Estou usando TWebBrowser e apenas executando essa URL.
Abração
GOSTEI 0
Yallebr
30/08/2008
SOBE!!!
GOSTEI 0
Luciano.lirio
30/08/2008
cara, faz o seguinte,
vai no link [url]http://indy.fulgan.com/SSL/openssl-0.9.8h-i386-win32-Indy-IntraWebEdition.zip[/url], baixe o arquivo descompacte em qualquer lugar, peque os arquivos libeay32.dll e ssleay32.dll e coloque no diretório C:\WINDOWS\system32, leia o arquivo readme.txt onde tem a instrução de pegar o arquivo IdSSLOpenSSLHeaders10.pas renomear para IdSSLOpenSSLHeaders.pas e substituir o original instalado junto com o Indy, não esqueça de guardar uma cópia do original caso de algum problema.
Feito isso, use o código abaixo
deixei um exemplo funcionando no link [url]http://www.mattos.eti.br/IDHTTP.zip[/url].
Obs.: Deixando os arquivos libeay32.dll e ssleay32.dll junto com o executavel também funciona.
Espero ajudar.
Att,
vai no link [url]http://indy.fulgan.com/SSL/openssl-0.9.8h-i386-win32-Indy-IntraWebEdition.zip[/url], baixe o arquivo descompacte em qualquer lugar, peque os arquivos libeay32.dll e ssleay32.dll e coloque no diretório C:\WINDOWS\system32, leia o arquivo readme.txt onde tem a instrução de pegar o arquivo IdSSLOpenSSLHeaders10.pas renomear para IdSSLOpenSSLHeaders.pas e substituir o original instalado junto com o Indy, não esqueça de guardar uma cópia do original caso de algum problema.
Feito isso, use o código abaixo
procedure TForm1.Button1Click(Sender: TObject); var Html: TStringList; Urls: String; begin try Urls := ´https://myaccount.12voip.com/clx/sendsms.php?username=xxxxxxxxxx&password=xxxxxxxxxx&from=xxxxxxxxxx&to=xxxxxxxxxx&text=xxxxxxxxxx´; //Urls := ´http://www.microsoft.com´; IdHTTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1; Html := TStringList.Create; Html.Text := IdHTTP1.Get(Urls); Memo1.Text := Html.Text; Html.Free; except on E: Exception do Memo1.Text := E.Message; end; end;
deixei um exemplo funcionando no link [url]http://www.mattos.eti.br/IDHTTP.zip[/url].
Obs.: Deixando os arquivos libeay32.dll e ssleay32.dll junto com o executavel também funciona.
Espero ajudar.
Att,
GOSTEI 0
Janbaceiredo
30/08/2008
Yallebr, desculpa a demora na resposta.
Estarei hoje apos o almoço no escritorio e te explico como pode fazer isso é bem simples.
Só uma duvida esse SMS que vc esta enviando não é tarifado aqui no Brasil??? Fiz alguns teste aqui e enviou tudo numa boa sem cobrar. Se nao tiver cobrança de tarifa irei colocar em meu sistema tb.
Valeu amigo, ate daqui a pouco.
Estarei hoje apos o almoço no escritorio e te explico como pode fazer isso é bem simples.
Só uma duvida esse SMS que vc esta enviando não é tarifado aqui no Brasil??? Fiz alguns teste aqui e enviou tudo numa boa sem cobrar. Se nao tiver cobrança de tarifa irei colocar em meu sistema tb.
Valeu amigo, ate daqui a pouco.
GOSTEI 0
Luciano.lirio
30/08/2008
janbaceiredo,
vc está com a versão que vem instalada no delphi?
eu uso o delphi 7 e atualizei o indo para a versão Indy 10.
o exemplo que deixei compilado no link funcionou?
vc está com a versão que vem instalada no delphi?
eu uso o delphi 7 e atualizei o indo para a versão Indy 10.
o exemplo que deixei compilado no link funcionou?
GOSTEI 0
Janbaceiredo
30/08/2008
Luciano,
o compilado funcionou sim.
Estou usando o Delphi2007.
O problema esta na referencia:
Mais vou verificar a Indy.
Só acrecentando o seu exemplo é bem melhor do o meu.
Valeu T+
o compilado funcionou sim.
Estou usando o Delphi2007.
O problema esta na referencia:
IdHTTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
Mais vou verificar a Indy.
Só acrecentando o seu exemplo é bem melhor do o meu.
Valeu T+
GOSTEI 0
Janbaceiredo
30/08/2008
A alteração dos arquivos *.pas ja estao OK!!!
Agora estas dando a msg: Could not load SSL library.
Já coloquei na pasta System32 as duas DLL e tb na pasta da aplicacao.
Mas mesmo assim sem exito.
Agora estas dando a msg: Could not load SSL library.
Já coloquei na pasta System32 as duas DLL e tb na pasta da aplicacao.
Mas mesmo assim sem exito.
GOSTEI 0
Luciano.lirio
30/08/2008
janbaceiredo,
da uma olhada no nome das dlls especificadas no arquivo IdSSLOpenSSLHeaders.pas.
tem que estar:
SSL_DLL_name = ´ssleay32.dll´; {Do not localize}
SSLCLIB_DLL_name = ´libeay32.dll´; {Do not localize}
esse erro que ve falou deu nos meus teste porque o nome das dlls estavam diferentes.
Att,
da uma olhada no nome das dlls especificadas no arquivo IdSSLOpenSSLHeaders.pas.
tem que estar:
SSL_DLL_name = ´ssleay32.dll´; {Do not localize}
SSLCLIB_DLL_name = ´libeay32.dll´; {Do not localize}
esse erro que ve falou deu nos meus teste porque o nome das dlls estavam diferentes.
Att,
GOSTEI 0
Janbaceiredo
30/08/2008
Realizei as alterações na Unit mais mesmo assim apresentando o mesmo erro.
TEria que recompilar a Indy???
TEria que recompilar a Indy???
GOSTEI 0
Luciano.lirio
30/08/2008
janbaceiredo,
aconcelho vc a baixar a versão atual do indy e reinstalar no teu delphi, faça isso mesmo que o delphi tenha a versão atual instalada, o indy que vem no delphi sempre da problemas...
após reinstalar o delphi atualise o arquivo IdSSLOpenSSLHeaders.pas pelo IdSSLOpenSSLHeaders10.pas.
Att,
aconcelho vc a baixar a versão atual do indy e reinstalar no teu delphi, faça isso mesmo que o delphi tenha a versão atual instalada, o indy que vem no delphi sempre da problemas...
após reinstalar o delphi atualise o arquivo IdSSLOpenSSLHeaders.pas pelo IdSSLOpenSSLHeaders10.pas.
Att,
GOSTEI 0
Luciano.lirio
30/08/2008
Correção
após reinstalar Indy no delphi atualise o arquivo IdSSLOpenSSLHeaders.pas pelo IdSSLOpenSSLHeaders10.pas.
após reinstalar Indy no delphi atualise o arquivo IdSSLOpenSSLHeaders.pas pelo IdSSLOpenSSLHeaders10.pas.
GOSTEI 0