Consumir WebService Serasa

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Re: Consumir WebService Serasa

Mensagem por clodoaldomonteiro »

Stanis!

Parece qu seu link de download está quebrado ou desativado.
Você pode colocar esse exemplo em outro lugar?
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Consumir WebService Serasa

Mensagem por Maligno »

O link postado pelo Stanis está funcionando. Mas o ZIP contém apenas um EXE. Nenhum fonte.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Stanis Luksys
Colaborador
Colaborador
Mensagens: 1329
Registrado em: 18 Jun 2005 03:04
Localização: São Paulo
Contato:

Re: Consumir WebService Serasa

Mensagem por Stanis Luksys »

Olá,

Eu digitei no google "upload de arquivos" e o site que veio eu enviei...

Não tem mesmo o fonte no ZIP, mas vou ver se consigo dar uma ajeitada nele e colocar para download, ou postar aqui mesmo. O código está extremamente mal feito porque eu estava testando várias coisas ao mesmo tempo, copiando e colando códigos dos exemplos que vem com o Harbour.

Se o problema for com o webservice, vou dar um exemplo aqui de como foi feito :

Código: Selecionar todos

oHttp:= TIpClientHttp():new( "http://nomedosite.php?par="+cSuaVar ) 
IF ! oHttp:open()
  Alert( "Erro na conexão: "+ oHttp:lastErrorMessage() )
ENDIF
cResposta := oHttp:readAll()  //aqui a var ja recebe todo o conteúdo retornado pelo site, seja HTML, XML, JSON ou o que for
oHttp:close()
Resumidamente, a grande maioria dos webservices trabalham também recebendo os dados via GET, bastando saber os parametros corretos para passar, como no exemplo, cSuaVar. Acessem este site, alterando a palavra cCep abaixo para um CEP conhecido:
"http://cep.republicavirtual.com.br/web_ ... ormato=xml"

Para os webservices que não trabalham com GET, mas somente com POST, se faz necessário usar outras funções da hbtip.

Não há nenhum exemplo pronto para isso, e no programa de CEP eu usei exatamente como exemplificado acima, no entanto uma leitura rápida na classe que acompanha a lib, permite realizar o envio de dados via POST sem maiores dificuldades. A classe se encontra no arquivo "/contrib/hbtip/httpcli.prg". O método a ser utilizado é o próprio Post.

Abraços.
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
Stanis Luksys
Colaborador
Colaborador
Mensagens: 1329
Registrado em: 18 Jun 2005 03:04
Localização: São Paulo
Contato:

Re: Consumir WebService Serasa

Mensagem por Stanis Luksys »

Voltei,

Se alguém tiver interesse em testar como se passa os parâmetros do XML via GET ou POST ao invés de enviar o XML, pode usar este site que contém vários serviços de teste:

http://www.xmethods.com/ve2/index.po;js ... mR4klr8sPB

Fiz uns testes essa semana quando fiz este programinha do CEP e funfou legal...
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
Stanis Luksys
Colaborador
Colaborador
Mensagens: 1329
Registrado em: 18 Jun 2005 03:04
Localização: São Paulo
Contato:

Re: Consumir WebService Serasa

Mensagem por Stanis Luksys »

Então,

Mais tarde posso tentar bolar algo a respeito, mas a idéia básica é a seguinte:

Imagine este webservice que contêm dados sobre a copa do mundo: http://footballpool.dataaccess.eu/data/info.wso

Agora para executar alguma das operações listadas, basta proceder como no exemplo do CEP. Veja como é simples pegar o "TOP 10" artilheiros da Copa:

Note o último 10 no endereço, se você quiser pegar o TOP 50, altere para 50...

Usando a hbtip:

Código: Selecionar todos

PROCEDURE MAIN()
	cls
   oHttp:= TIpClientHttp():new( "http://footballpool.dataaccess.eu/data/info.wso/TopGoalScorers/JSON?iTopN=10" )
   IF ! oHttp:open()
      ? "Erro:", oHttp:lastErrorMessage()
      QUIT
   ENDIF
   cResposta   := oHttp:readAll()
   oHttp:close()   	
   ? cResposta
RETURN
Veja o retorno como chega: (neste ponto pode-se usar as funções para JSON - viewtopic.php?f=4&t=11317)

Código: Selecionar todos

[
  {
    "sName": "David Villa",
    "iGoals": 5,
    "sCountry": "Y",
    "sFlag": "http://footballpool.dataaccess.eu/images/flags/es.gif"
  },
  {
    "sName": "Diego Forlán",
    "iGoals": 5,
    "sCountry": "Y",
    "sFlag": "http://footballpool.dataaccess.eu/images/flags/uy.gif"
  },
  {
    "sName": "Thomas Müller",
    "iGoals": 5,
    "sCountry": "Y",
    "sFlag": "http://footballpool.dataaccess.eu/images/flags/de.gif"
  },
  {
    "sName": "Wesley Sneijder",
    "iGoals": 5,
    "sCountry": "Y",
    "sFlag": "http://footballpool.dataaccess.eu/images/flags/nl.gif"
  },
  {
    "sName": "Gonzalo Higuaín",
    "iGoals": 4,
    "sCountry": "Y",
    "sFlag": "http://footballpool.dataaccess.eu/images/flags/ar.gif"
  },
  {
    "sName": "Miroslav Klose",
    "iGoals": 4,
    "sCountry": "Y",
    "sFlag": "http://footballpool.dataaccess.eu/images/flags/de.gif"
  },
  {
    "sName": "Róbert Vittek",
    "iGoals": 4,
    "sCountry": "Y",
    "sFlag": "http://footballpool.dataaccess.eu/images/flags/sk.gif"
  },
  {
    "sName": "Asamoah Gyan",
    "iGoals": 3,
    "sCountry": "Y",
    "sFlag": "http://footballpool.dataaccess.eu/images/flags/gh.gif"
  },
  {
    "sName": "Chung-Yong Lee",
    "iGoals": 3,
    "sCountry": "Y",
    "sFlag": "http://footballpool.dataaccess.eu/images/flags/kr.gif"
  },
  {
    "sName": "Landon Donovan",
    "iGoals": 3,
    "sCountry": "Y",
    "sFlag": "http://footballpool.dataaccess.eu/images/flags/us.gif"
  }
]

Apenas lembrando que o "padrão" seria enviar algo parecido com isso, mas é justamente o que eu quis evitar:

Código: Selecionar todos

POST /data/info.wso HTTP/1.1
Host: footballpool.dataaccess.eu
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <TopGoalScorers xmlns="http://footballpool.dataaccess.eu">
      <iTopN>int</iTopN>
    </TopGoalScorers>
  </soap:Body>
</soap:Envelope>
Bom, espero ter esclarecido em alguma coisa...
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
Responder