<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6944203584010482802</id><updated>2012-02-16T00:38:08.392-08:00</updated><title type='text'>Programação web</title><subtitle type='html'>Testes com diversas APIs para Cloud e redes sociais utilizando primariamente o (x)Harbour</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://angeiras.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://angeiras.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Manoel Angeiras</name><uri>http://www.blogger.com/profile/15691566354434118221</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6944203584010482802.post-7503889152020076346</id><published>2011-08-20T06:53:00.000-07:00</published><updated>2011-08-20T06:53:48.056-07:00</updated><title type='text'>Esse "treco" do PAF-ECF e outras porcarias fiscais.</title><content type='html'>Antes a gente ia nos foruns de programação pra discutir uma nova técnica, um aspecto obscuro da linguagem ou do framework de trabalho. Isso acabou faz tempo.&lt;br /&gt;&lt;br /&gt;Hoje, na maioria dos foruns de programação do Brasil, principalmente os mais voltados a programação de aplicativos comerciais, só se fala de ECF, PAF-ECF, SPED, SEF, NFe e outras porcarias fiscais. Tem programador que sabe mais de legislação do que os contadores dos clientes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944203584010482802-7503889152020076346?l=angeiras.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://angeiras.blogspot.com/feeds/7503889152020076346/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://angeiras.blogspot.com/2011/08/esse-treco-do-paf-ecf-e-outras.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/7503889152020076346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/7503889152020076346'/><link rel='alternate' type='text/html' href='http://angeiras.blogspot.com/2011/08/esse-treco-do-paf-ecf-e-outras.html' title='Esse &quot;treco&quot; do PAF-ECF e outras porcarias fiscais.'/><author><name>Manoel Angeiras</name><uri>http://www.blogger.com/profile/15691566354434118221</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944203584010482802.post-2290114727460625903</id><published>2011-07-19T08:01:00.000-07:00</published><updated>2011-07-19T08:01:40.446-07:00</updated><title type='text'>Inventário ANVISA - Resolvendo problemas</title><content type='html'>Encontrei problemas na recuperação do inventário da ANVISA. Principalmente quando na descrição da razão social da empresa tinha o caracter '&amp;'. Debugando com o fiddler2, estava tudo correto, mas quando gravava o responseText, não ia de jeito nenhum.&lt;br /&gt;&lt;br /&gt;A forma mais simples que usei foi trocar o responseText por responseXML na função LOGIN(...). Funcionou de primeira.&lt;br /&gt;&lt;br /&gt;Pode ser que nas outras respostas, também tenha que mudar para responseXML. Mas não fiz os testes ainda.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944203584010482802-2290114727460625903?l=angeiras.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://angeiras.blogspot.com/feeds/2290114727460625903/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://angeiras.blogspot.com/2011/07/inventario-anvisa-resolvendo-problemas.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/2290114727460625903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/2290114727460625903'/><link rel='alternate' type='text/html' href='http://angeiras.blogspot.com/2011/07/inventario-anvisa-resolvendo-problemas.html' title='Inventário ANVISA - Resolvendo problemas'/><author><name>Manoel Angeiras</name><uri>http://www.blogger.com/profile/15691566354434118221</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944203584010482802.post-1074166239623711574</id><published>2011-06-25T06:17:00.000-07:00</published><updated>2011-06-25T06:17:21.067-07:00</updated><title type='text'>API do Twitter</title><content type='html'>Até o ano passado, o Twitter permitia que a autorização fosse realizada apenas com a chave usuário/senha. Mas isso mudou : agora, quase todas as requisições precisam de autorização OAuth, bem mais complicada, e me parece, sem uma lib do xHarbour para isso.&lt;br /&gt;Tem alguns exemplos de lib em Java, C++ e Delphi, vou estudar e ver qual é mais fácil de converter para C para usar com xHarbour.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944203584010482802-1074166239623711574?l=angeiras.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://angeiras.blogspot.com/feeds/1074166239623711574/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://angeiras.blogspot.com/2011/06/api-do-twitter.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/1074166239623711574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/1074166239623711574'/><link rel='alternate' type='text/html' href='http://angeiras.blogspot.com/2011/06/api-do-twitter.html' title='API do Twitter'/><author><name>Manoel Angeiras</name><uri>http://www.blogger.com/profile/15691566354434118221</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944203584010482802.post-3834684264705965904</id><published>2011-06-24T10:30:00.000-07:00</published><updated>2011-06-24T10:30:50.655-07:00</updated><title type='text'>Testando API do Twitter</title><content type='html'>Comecei alguns testes com a API do twitter. A primeira vista não parece nada complicado ou diferente do que já tinha feito para a ANVISA : Usar o objeto XMLHTTPRequest para realizar as chamadas e ler seu resultado. Vou postar um exemplo para testar se a comunicação entre o programa e o Twitter está funcionando. &lt;br /&gt;&lt;br /&gt;Se retornar o status = 200, está tudo OK.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:cpp"&gt;#include "inkey.ch"&lt;br /&gt;&lt;br /&gt;***************&lt;br /&gt;FUNCTION main()&lt;br /&gt;***************&lt;br /&gt;   local http&lt;br /&gt;&lt;br /&gt;   setmode(25,80)&lt;br /&gt;   wvw_settitle(,"Testando API do Twitter")&lt;br /&gt;   setcolor( 'N/W,N/GR*,,,N/W*' )&lt;br /&gt;   cls&lt;br /&gt;&lt;br /&gt;   if !Configura(@http)&lt;br /&gt;      Alert("Verifique o erro e tente outra vez.")&lt;br /&gt;      quit&lt;br /&gt;   endif&lt;br /&gt;&lt;br /&gt;   Alert("Verificar Status Twitter")&lt;br /&gt;&lt;br /&gt;   http:Open( "GET", "https://twitter.com/help/test.xml", .F. )&lt;br /&gt;   http:send()&lt;br /&gt;&lt;br /&gt;   nStatus := strzero( http:status,3 )&lt;br /&gt;&lt;br /&gt;   Alert("Status = " + nStatus)&lt;br /&gt;return NIL&lt;br /&gt;&lt;br /&gt;*********************************&lt;br /&gt;STATIC FUNCTION CONFIGURA( http )&lt;br /&gt;*********************************&lt;br /&gt;   local aHosts, cAddress := "www.google.com.br", lRet := .T.&lt;br /&gt;&lt;br /&gt;   begin sequence&lt;br /&gt;      InetInit()&lt;br /&gt;      aHosts := InetGetHosts( cAddress )&lt;br /&gt;      if aHosts == NIL .or. len(aHosts) == 0&lt;br /&gt;         lRet := .F.&lt;br /&gt;         break&lt;br /&gt;      endif&lt;br /&gt;      InetCleanup()&lt;br /&gt;&lt;br /&gt;      try&lt;br /&gt;         http := CreateObject( "MSXML2.XMLHTTP" )&lt;br /&gt;      catch&lt;br /&gt;         try&lt;br /&gt;            http := CreateObject( "MSXML2.XMLHTTP" )&lt;br /&gt;         catch&lt;br /&gt;            Alert("Erro na criacao do objeto MSXML2.XMLHTTP : " + Ole2TxtError())&lt;br /&gt;            lRet := .F.&lt;br /&gt;         end&lt;br /&gt;      end&lt;br /&gt;   end sequence&lt;br /&gt;RETURN lRet&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944203584010482802-3834684264705965904?l=angeiras.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://angeiras.blogspot.com/feeds/3834684264705965904/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://angeiras.blogspot.com/2011/06/testando-api-do-twitter.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/3834684264705965904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/3834684264705965904'/><link rel='alternate' type='text/html' href='http://angeiras.blogspot.com/2011/06/testando-api-do-twitter.html' title='Testando API do Twitter'/><author><name>Manoel Angeiras</name><uri>http://www.blogger.com/profile/15691566354434118221</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944203584010482802.post-4695633896501239757</id><published>2011-06-15T08:23:00.000-07:00</published><updated>2011-06-15T08:26:59.071-07:00</updated><title type='text'>Exemplo - Recuperando inventário da ANVISA/SNGPC</title><content type='html'>Nesse último exemplo para o SNGPC, não uso nenhum webservice da ANVISA. Essa operação não é padrão. Significa que se mudarem a forma de acesso ou a sequencia do login, o programa poderá deixar de funcionar.&lt;br /&gt;&lt;br /&gt;Como o programa exemplo ficou grande pra um blog (&gt;500 linhas), achei melhor colocar no &lt;a href="http://www.4shared.com/file/2bdr2hm0/ANVISA.html"&gt;4shared&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;O programa é bem fácil de ler. Coloquei diversos comentários, até pra me lembrar do que tava fazendo, já que uso essa função no meu software de SNGPC.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944203584010482802-4695633896501239757?l=angeiras.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://angeiras.blogspot.com/feeds/4695633896501239757/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://angeiras.blogspot.com/2011/06/exemplo-recuperando-inventario-da.html#comment-form' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/4695633896501239757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/4695633896501239757'/><link rel='alternate' type='text/html' href='http://angeiras.blogspot.com/2011/06/exemplo-recuperando-inventario-da.html' title='Exemplo - Recuperando inventário da ANVISA/SNGPC'/><author><name>Manoel Angeiras</name><uri>http://www.blogger.com/profile/15691566354434118221</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944203584010482802.post-2972234496458234880</id><published>2011-06-14T19:58:00.000-07:00</published><updated>2011-06-24T10:24:18.172-07:00</updated><title type='text'>Exemplo - Testando status do arquivo XML enviado</title><content type='html'>Nesse terceiro exemplo, testamos o recebimento do arquivo XML ou podemos obter a relação de erros de validação e gerar um relatório de erros. A parte do exemplo que trata dos erros deve ser melhor estudada e/ou melhorada.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:cpp"&gt;#define CR_LF chr(13) + chr(10)&lt;br /&gt;&lt;br /&gt;***************&lt;br /&gt;FUNCTION MAIN()&lt;br /&gt;***************&lt;br /&gt;   local lRet := .T.&lt;br /&gt;&lt;br /&gt;   if !InternetOK()&lt;br /&gt;      Alert(&amp;quot;Sem conex&amp;#227;o com a Internet. Verifique...&amp;quot;)&lt;br /&gt;      return .F.&lt;br /&gt;   endif&lt;br /&gt;   //&lt;br /&gt;   // ABERTURA DAS FUNCOES PARA WEBSERVICE DO XHARBOUR - OBJETO HTTP&lt;br /&gt;   //&lt;br /&gt;   try&lt;br /&gt;      http := CreateObject( &amp;quot;MSXML2.XMLHTTP&amp;quot; )&lt;br /&gt;   catch&lt;br /&gt;      try&lt;br /&gt;         http := CreateObject( &amp;quot;MSXML2.XMLHTTP&amp;quot; )&lt;br /&gt;      catch&lt;br /&gt;         Alert(&amp;quot;Erro na cria&amp;#231;&amp;#227;o do objeto MSXML2.XMLHTTP : &amp;quot; + Ole2TxtError())&lt;br /&gt;      end&lt;br /&gt;   end&lt;br /&gt;   //&lt;br /&gt;   // CRIA OBJETO XML&lt;br /&gt;   //&lt;br /&gt;   try&lt;br /&gt;      doc := CreateObject( &amp;quot;MSXML2.DOMDocument&amp;quot; )&lt;br /&gt;   catch&lt;br /&gt;      try&lt;br /&gt;         doc := CreateObject( &amp;quot;MSXML2.DOMDocument&amp;quot; )&lt;br /&gt;      catch&lt;br /&gt;         Alert(&amp;quot;Erro na criacao do objeto MSXML2.DOMDocument : &amp;quot; + Ole2TxtError())&lt;br /&gt;         return .F.&lt;br /&gt;      end&lt;br /&gt;   end&lt;br /&gt;&lt;br /&gt;   cXml := &amp;quot;&amp;quot;&lt;br /&gt;   cXml += '&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; ?&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '&amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '  &amp;lt;soapenv:Header/&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '  &amp;lt;soapenv:Body&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '    &amp;lt;tem:ConsultaDadosArquivoSNGPC&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '      &amp;lt;tem:Email&amp;gt;' + SEU_EMAIL_AQUI + '&amp;lt;/tem:Email&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '      &amp;lt;tem:Senha&amp;gt;' + SUA_SENHA_AQUI + '&amp;lt;/tem:Senha&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '      &amp;lt;tem:CNPJ&amp;gt;' + CNPJ_DA_EMPRESA + '&amp;lt;/tem:CNPJ&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '      &amp;lt;tem:Hash&amp;gt;' + HASH_DO_ARQUIVO + '&amp;lt;/tem:Hash&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '    &amp;lt;/tem:ConsultaDadosArquivoSNGPC&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '  &amp;lt;/soapenv:Body&amp;gt; ' + CR_LF&lt;br /&gt;   cXml += '&amp;lt;/soapenv:Envelope&amp;gt;' + CR_LF&lt;br /&gt;&lt;br /&gt;//&lt;br /&gt;// ENDERECO HOMOLOGACAO&lt;br /&gt;//&lt;br /&gt;   http:Open( &amp;quot;POST&amp;quot;, &amp;quot;http://homologacao.anvisa.gov.br/sngpc/webservice/sngpc.asmx?WSDL HTTP/1.1&amp;quot;, .F. )&lt;br /&gt;   http:SetRequestHeader( &amp;quot;Content-Type&amp;quot;   , &amp;quot;text/xml;charset=ISO-8859-1&amp;quot; )&lt;br /&gt;   http:SetRequestHeader( &amp;quot;SOAPAction&amp;quot;     , &amp;quot;http://tempuri.org/ConsultaDadosArquivoSNGPC&amp;quot; )&lt;br /&gt;   http:SetRequestHeader( &amp;quot;Host&amp;quot;           , &amp;quot;homologacao.anvisa.gov.br&amp;quot; )&lt;br /&gt;&lt;br /&gt;//&lt;br /&gt;// ENDERECO PRODUCAO&lt;br /&gt;//&lt;br /&gt;// http:Open( &amp;quot;POST&amp;quot;, &amp;quot;http://sngpc.anvisa.gov.br/webservice/sngpc.asmx?WSDL HTTP/1.1&amp;quot;, .F. )&lt;br /&gt;// http:SetRequestHeader( &amp;quot;Content-Type&amp;quot;   , &amp;quot;text/xml;charset=ISO-8859-1&amp;quot; )&lt;br /&gt;// http:SetRequestHeader( &amp;quot;SOAPAction&amp;quot;     , &amp;quot;http://tempuri.org/ConsultaDadosArquivoSNGPC&amp;quot; )&lt;br /&gt;// http:SetRequestHeader( &amp;quot;Host&amp;quot;           , &amp;quot;sngpc.anvisa.gov.br&amp;quot; )&lt;br /&gt;&lt;br /&gt;   doc:LoadXML( cXml )&lt;br /&gt;   http:send( doc:xml )&lt;br /&gt;   response  := http:responseText&lt;br /&gt;   oXmlDoc   := TXmlDocument():new()&lt;br /&gt;   oXMlDoc:read( response )&lt;br /&gt;&lt;br /&gt;   oXmlNode := oXmlDoc:findFirst( &amp;quot;ConsultaDadosArquivoSNGPCResult&amp;quot; )&lt;br /&gt;   cDados   := oXmlNode:cData&lt;br /&gt;&lt;br /&gt;   oXMlDoc:read( cDados )&lt;br /&gt;&lt;br /&gt;   oXmlNode := oXmlDoc:findFirst( &amp;quot;DATAVALIDACAO&amp;quot; )&lt;br /&gt;&lt;br /&gt;   if oXmlNode == NIL .or. oXmlNode:cData == NIL .or. empty( oXmlNode:cData )&lt;br /&gt;      Alert(&amp;quot;Arquivo ainda nao foi validado...&amp;quot;)&lt;br /&gt;      lRet := .F.&lt;br /&gt;   else&lt;br /&gt;      cMens    := oXmlNode:cData&lt;br /&gt;      oXmlNode := oXmlDoc:findFirst( &amp;quot;MENSAGEMVALIDACAO&amp;quot; )&lt;br /&gt;      if oXmlNode == NIL&lt;br /&gt;         Alert(&amp;quot;Arquivo validado em : &amp;quot; + cMens )&lt;br /&gt;      else&lt;br /&gt;         nHandle := fcreate( &amp;quot;temp.txt&amp;quot; )&lt;br /&gt;         fwrite( nHandle, oXmlNode:cData )&lt;br /&gt;         fclose( nHandle )&lt;br /&gt;         nHandle := fopen( &amp;quot;temp.txt&amp;quot; )&lt;br /&gt;         aLinhas := {}&lt;br /&gt;         cLinha  := &amp;quot;&amp;quot;&lt;br /&gt;&lt;br /&gt;         while HB_FReadLine( nHandle, @cLinha, &amp;quot;[NOVA_LINHA]&amp;quot; ) == 0&lt;br /&gt;            aadd( aLinhas, cLinha )&lt;br /&gt;         enddo&lt;br /&gt;         aadd( aLinhas, cLinha )&lt;br /&gt;         fclose( nHandle )&lt;br /&gt;&lt;br /&gt;         if Alert(&amp;quot;Arquivo enviado n„o foi recebido. Emite relat&amp;#162;rio com erros ?&amp;quot;, { &amp;quot;SIM&amp;quot;, &amp;quot;NAO&amp;quot; } ) == 1&lt;br /&gt;            // IMPRIME RELATORIO COM ERROS DE VALIDACAO DO XML&lt;br /&gt;         endif&lt;br /&gt;         lRet := .F.&lt;br /&gt;      endif&lt;br /&gt;   endif&lt;br /&gt;RETURN lRet&lt;br /&gt;&lt;br /&gt;*********************&lt;br /&gt;FUNCTION InternetOK()&lt;br /&gt;*********************&lt;br /&gt;   local aHosts, cName, cAddress := &amp;quot;www.google.com.br&amp;quot;&lt;br /&gt;   InetInit()&lt;br /&gt;   aHosts := InetGetHosts( cAddress )&lt;br /&gt;   if aHosts == NIL .or. len(aHosts) == 0&lt;br /&gt;      InetCleanup()&lt;br /&gt;      return .F.&lt;br /&gt;   endif&lt;br /&gt;   InetCleanup()&lt;br /&gt;RETURN .T.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944203584010482802-2972234496458234880?l=angeiras.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://angeiras.blogspot.com/feeds/2972234496458234880/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://angeiras.blogspot.com/2011/06/exemplo-testando-status-do-arquivo-xml.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/2972234496458234880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/2972234496458234880'/><link rel='alternate' type='text/html' href='http://angeiras.blogspot.com/2011/06/exemplo-testando-status-do-arquivo-xml.html' title='Exemplo - Testando status do arquivo XML enviado'/><author><name>Manoel Angeiras</name><uri>http://www.blogger.com/profile/15691566354434118221</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944203584010482802.post-508378298459746549</id><published>2011-06-14T16:29:00.000-07:00</published><updated>2011-06-24T10:23:39.877-07:00</updated><title type='text'>Exemplo - Enviando arquivo XML</title><content type='html'>Nesse segundo exemplo, vamos enviar o arquivo XML para ANVISA. Note que no XML as tags &lt; e &gt; devem ser trocadas por &amp; l t ;  e  &amp; g t ;.&lt;br /&gt;Claro que esse hash calculado deve ser gravado em algum lugar para depois testar se o arquivo foi recebido, se está com erros, etc. Vamos ver o uso desse código no próximo exemplo.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:cpp"&gt;#define CR_LF chr(13) + chr(10)&lt;br /&gt;&lt;br /&gt;***************&lt;br /&gt;FUNCTION MAIN()&lt;br /&gt;***************&lt;br /&gt;   if !InternetOK()&lt;br /&gt;      Alert(&amp;quot;Sem conex&amp;#227;o com a Internet. Verifique...&amp;quot;)&lt;br /&gt;      return .F.&lt;br /&gt;   endif&lt;br /&gt;   //&lt;br /&gt;   // ABERTURA DAS FUNCOES PARA WEBSERVICE DO XHARBOUR - OBJETO HTTP&lt;br /&gt;   //&lt;br /&gt;   try&lt;br /&gt;      http := CreateObject( &amp;quot;MSXML2.XMLHTTP&amp;quot; )&lt;br /&gt;   catch&lt;br /&gt;      try&lt;br /&gt;         http := CreateObject( &amp;quot;MSXML2.XMLHTTP&amp;quot; )&lt;br /&gt;      catch&lt;br /&gt;         Alert(&amp;quot;Erro na cria&amp;#231;&amp;#227;o do objeto MSXML2.XMLHTTP : &amp;quot; + Ole2TxtError())&lt;br /&gt;      end&lt;br /&gt;   end&lt;br /&gt;   //&lt;br /&gt;   // CRIA OBJETO XML&lt;br /&gt;   //&lt;br /&gt;   try&lt;br /&gt;      doc := CreateObject( &amp;quot;MSXML2.DOMDocument&amp;quot; )&lt;br /&gt;   catch&lt;br /&gt;      try&lt;br /&gt;         doc := CreateObject( &amp;quot;MSXML2.DOMDocument&amp;quot; )&lt;br /&gt;      catch&lt;br /&gt;         Alert(&amp;quot;Erro na criacao do objeto MSXML2.DOMDocument : &amp;quot; + Ole2TxtError())&lt;br /&gt;         return NIL&lt;br /&gt;      end&lt;br /&gt;   end&lt;br /&gt;&lt;br /&gt;   cFile := memoread( seu_arquivo_xml )&lt;br /&gt;   cHash := HB_MD5File( seu_arquivo_xml )&lt;br /&gt;&lt;br /&gt;   cXml := &amp;quot;&amp;quot;&lt;br /&gt;   cXml += '&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; ?&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '&amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '  &amp;lt;soapenv:Header/&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '  &amp;lt;soapenv:Body&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '    &amp;lt;tem:EnviaArquivoSNGPC&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '      &amp;lt;tem:Email&amp;gt;' + SEU_EMAIL_AQUI + '&amp;lt;/tem:Email&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '      &amp;lt;tem:Senha&amp;gt;' + SUA_SENHA_AQUI + '&amp;lt;/tem:Senha&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '      &amp;lt;tem:Arquivo&amp;gt;' + cFile + '&amp;lt;/tem:Arquivo&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '      &amp;lt;tem:HashIdentificacao&amp;gt;' + cHash + '&amp;lt;/tem:HashIdentificacao&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '    &amp;lt;/tem:EnviaArquivoSNGPC&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '  &amp;lt;/soapenv:Body&amp;gt; ' + CR_LF&lt;br /&gt;   cXml += '&amp;lt;/soapenv:Envelope&amp;gt;' + CR_LF&lt;br /&gt;&lt;br /&gt;//&lt;br /&gt;// ENDERECO HOMOLOGACAO&lt;br /&gt;//&lt;br /&gt;   http:Open( &amp;quot;POST&amp;quot;, &amp;quot;http://homologacao.anvisa.gov.br/sngpc/webservice/sngpc.asmx?WSDL HTTP/1.1&amp;quot;, .F. )&lt;br /&gt;   http:SetRequestHeader( &amp;quot;Content-Type&amp;quot;   , &amp;quot;text/xml;charset=ISO-8859-1&amp;quot; )&lt;br /&gt;   http:SetRequestHeader( &amp;quot;SOAPAction&amp;quot;     , &amp;quot;http://tempuri.org/EnviaArquivoSNGPC&amp;quot; )&lt;br /&gt;   http:SetRequestHeader( &amp;quot;Host&amp;quot;           , &amp;quot;homologacao.anvisa.gov.br&amp;quot; )&lt;br /&gt;&lt;br /&gt;//&lt;br /&gt;// ENDERECO PRODUCAO&lt;br /&gt;//&lt;br /&gt;// http:Open( &amp;quot;POST&amp;quot;, &amp;quot;http://sngpc.anvisa.gov.br/webservice/sngpc.asmx?WSDL HTTP/1.1&amp;quot;, .F. )&lt;br /&gt;// http:SetRequestHeader( &amp;quot;Content-Type&amp;quot;   , &amp;quot;text/xml;charset=ISO-8859-1&amp;quot; )&lt;br /&gt;// http:SetRequestHeader( &amp;quot;SOAPAction&amp;quot;     , &amp;quot;http://tempuri.org/EnviaArquivoSNGPC&amp;quot; )&lt;br /&gt;// http:SetRequestHeader( &amp;quot;Host&amp;quot;           , &amp;quot;sngpc.anvisa.gov.br&amp;quot; )&lt;br /&gt;&lt;br /&gt;   doc:LoadXML( cXml )&lt;br /&gt;   http:send( doc:xml )&lt;br /&gt;   response  := http:responseText&lt;br /&gt;   oXmlDoc   := TXmlDocument():new()&lt;br /&gt;   oXMlDoc:read( response )&lt;br /&gt;&lt;br /&gt;   oXmlNode := oXmlDoc:findFirst( &amp;quot;EnviaArquivoSNGPCResult&amp;quot; )&lt;br /&gt;   if empty( oXmlNode:cData )&lt;br /&gt;      Alert(&amp;quot;Erro no envio do arquivo para ANVISA. Tente outra vez.&amp;quot;)&lt;br /&gt;   elseif upper( left( oXmlNode:cData, 28 ) ) == &amp;quot;ARQUIVO RECEBIDO COM SUCESSO&amp;quot;&lt;br /&gt;      Alert(oXmlNode:cData)&lt;br /&gt;   else&lt;br /&gt;      Alert(oXmlNode:cData)&lt;br /&gt;      Alert(&amp;quot;Erro no envio do arquivo para ANVISA. Tente outra vez.&amp;quot;)&lt;br /&gt;   endif&lt;br /&gt;RETURN NIL&lt;br /&gt;&lt;br /&gt;*********************&lt;br /&gt;FUNCTION InternetOK()&lt;br /&gt;*********************&lt;br /&gt;   local aHosts, cName, cAddress := &amp;quot;www.google.com.br&amp;quot;&lt;br /&gt;   InetInit()&lt;br /&gt;   aHosts := InetGetHosts( cAddress )&lt;br /&gt;   if aHosts == NIL .or. len(aHosts) == 0&lt;br /&gt;      InetCleanup()&lt;br /&gt;      return .F.&lt;br /&gt;   endif&lt;br /&gt;   InetCleanup()&lt;br /&gt;RETURN .T.&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944203584010482802-508378298459746549?l=angeiras.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://angeiras.blogspot.com/feeds/508378298459746549/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://angeiras.blogspot.com/2011/06/exemplo-enviando-arquivo-xml.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/508378298459746549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/508378298459746549'/><link rel='alternate' type='text/html' href='http://angeiras.blogspot.com/2011/06/exemplo-enviando-arquivo-xml.html' title='Exemplo - Enviando arquivo XML'/><author><name>Manoel Angeiras</name><uri>http://www.blogger.com/profile/15691566354434118221</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944203584010482802.post-1476700402865115224</id><published>2011-06-14T08:09:00.000-07:00</published><updated>2011-06-24T10:22:20.858-07:00</updated><title type='text'>Exemplo - Validando Usuário</title><content type='html'>Estou usando o seguinte código para validar o usuário/senha :&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:cpp"&gt;#define CR_LF chr(13) + chr(10)&lt;br /&gt;&lt;br /&gt;***************&lt;br /&gt;FUNCTION MAIN()&lt;br /&gt;***************&lt;br /&gt;   if !InternetOK()&lt;br /&gt;      Alert(&amp;quot;Conexao com a internet falhou !&amp;quot;)&lt;br /&gt;   else&lt;br /&gt;      Alert(&amp;quot;Conexao OK&amp;quot;)&lt;br /&gt;   endif&lt;br /&gt;   //&lt;br /&gt;   // Abertura das funcoes para WebService do xHarbour&lt;br /&gt;   //&lt;br /&gt;   try&lt;br /&gt;      doc := CreateObject( &amp;quot;MSXML2.DOMDocument&amp;quot; )&lt;br /&gt;   catch&lt;br /&gt;      try&lt;br /&gt;         doc := CreateObject( &amp;quot;MSXML2.DOMDocument&amp;quot; )&lt;br /&gt;      catch&lt;br /&gt;         Alert(&amp;quot;Erro na criacao do objeto MSXML2.DOMDocument : &amp;quot; + Ole2TxtError())&lt;br /&gt;         return NIL&lt;br /&gt;      end&lt;br /&gt;   end&lt;br /&gt;&lt;br /&gt;   try&lt;br /&gt;      http := CreateObject( &amp;quot;MSXML2.XMLHTTP&amp;quot; )&lt;br /&gt;   catch&lt;br /&gt;      try&lt;br /&gt;         http := CreateObject( &amp;quot;MSXML2.XMLHTTP&amp;quot; )&lt;br /&gt;      catch&lt;br /&gt;         Alert(&amp;quot;Erro na criacao do objeto MSXML2.XMLHTTP : &amp;quot; + Ole2TxtError())&lt;br /&gt;      end&lt;br /&gt;   end&lt;br /&gt;   //&lt;br /&gt;   // Criar o XML request&lt;br /&gt;   //&lt;br /&gt;   cXml := &amp;quot;&amp;quot;&lt;br /&gt;   cXml += '&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '&amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; xmlns:tem=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '  &amp;lt;soapenv:Header/&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '  &amp;lt;soapenv:Body&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '    &amp;lt;tem:ValidarUsuario&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '      &amp;lt;tem:Email&amp;gt;SEU_EMAIL_AQUI&amp;lt;/tem:Email&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '      &amp;lt;tem:Senha&amp;gt;SUA_SENHA_AQUI&amp;lt;/tem:Senha&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '    &amp;lt;/tem:ValidarUsuario&amp;gt;' + CR_LF&lt;br /&gt;   cXml += '  &amp;lt;/soapenv:Body&amp;gt; ' + CR_LF&lt;br /&gt;   cXml += '&amp;lt;/soapenv:Envelope&amp;gt;' + CR_LF&lt;br /&gt;&lt;br /&gt;//&lt;br /&gt;// ENDERECO DE HOMOLOGACAO&lt;br /&gt;//   &lt;br /&gt;   http:Open( &amp;quot;POST&amp;quot;, &amp;quot;http://homologacao.anvisa.gov.br/sngpc/webservice/sngpc.asmx?WSDL HTTP/1.1&amp;quot;, .F. )&lt;br /&gt;   http:SetRequestHeader( &amp;quot;Content-Type&amp;quot;   , &amp;quot;text/xml;charset=UTF-8&amp;quot; )&lt;br /&gt;   http:SetRequestHeader( &amp;quot;SOAPAction&amp;quot;     , &amp;quot;http://tempuri.org/ValidarUsuario&amp;quot; )&lt;br /&gt;   http:SetRequestHeader( &amp;quot;Host&amp;quot;           , &amp;quot;homologacao.anvisa.gov.br&amp;quot; )&lt;br /&gt;&lt;br /&gt;//&lt;br /&gt;// ENDERECO DE PRODUCAO&lt;br /&gt;//   &lt;br /&gt;// http:Open( &amp;quot;POST&amp;quot;, &amp;quot;http://sngpc.anvisa.gov.br/webservice/sngpc.asmx?WSDL HTTP/1.1&amp;quot;, .F. )&lt;br /&gt;// http:SetRequestHeader( &amp;quot;Content-Type&amp;quot;   , &amp;quot;text/xml;charset=UTF-8&amp;quot; )&lt;br /&gt;// http:SetRequestHeader( &amp;quot;SOAPAction&amp;quot;     , &amp;quot;http://tempuri.org/ValidarUsuario&amp;quot; )&lt;br /&gt;// http:SetRequestHeader( &amp;quot;Host&amp;quot;           , &amp;quot;sngpc.anvisa.gov.br&amp;quot; )&lt;br /&gt;&lt;br /&gt;   Alert(&amp;quot;Carrega o request...&amp;quot;)&lt;br /&gt;   doc:LoadXML( cXml )                // Carrega o request de string&lt;br /&gt;&lt;br /&gt;   Alert(&amp;quot;Envia o xml...&amp;quot;)&lt;br /&gt;   http:send( doc:xml )               // Envia o request&lt;br /&gt;&lt;br /&gt;   Alert(&amp;quot;Ler a resposta...&amp;quot;)&lt;br /&gt;   response  := http:responseText     // Recebe a resposta&lt;br /&gt;&lt;br /&gt;   Alert(&amp;quot;Apresentando a resposta&amp;quot;)&lt;br /&gt;&lt;br /&gt;   oXmlDoc := TXmlDocument():new()&lt;br /&gt;   oXMlDoc:read( response )&lt;br /&gt;&lt;br /&gt;   oXmlNode := oXmlDoc:findFirst( &amp;quot;ValidarUsuarioResult&amp;quot; )&lt;br /&gt;   Alert(oXmlNode:cName + &amp;quot; = &amp;quot; + oXmlNode:cData )&lt;br /&gt;&lt;br /&gt;RETURN NIL&lt;br /&gt;&lt;br /&gt;*********************&lt;br /&gt;FUNCTION InternetOK()&lt;br /&gt;*********************&lt;br /&gt;   local aHosts, cName, cAddress := &amp;quot;www.google.com.br&amp;quot;&lt;br /&gt;   InetInit()&lt;br /&gt;   aHosts := InetGetHosts( cAddress )&lt;br /&gt;   if aHosts == NIL .or. len(aHosts) == 0&lt;br /&gt;      InetCleanup()&lt;br /&gt;      return .F.&lt;br /&gt;   endif&lt;br /&gt;   InetCleanup()&lt;br /&gt;RETURN .T.&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944203584010482802-1476700402865115224?l=angeiras.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://angeiras.blogspot.com/feeds/1476700402865115224/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://angeiras.blogspot.com/2011/06/exemplo-validando-usuario.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/1476700402865115224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/1476700402865115224'/><link rel='alternate' type='text/html' href='http://angeiras.blogspot.com/2011/06/exemplo-validando-usuario.html' title='Exemplo - Validando Usuário'/><author><name>Manoel Angeiras</name><uri>http://www.blogger.com/profile/15691566354434118221</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944203584010482802.post-8419736223116462811</id><published>2011-04-25T09:11:00.000-07:00</published><updated>2011-04-25T09:11:15.517-07:00</updated><title type='text'>Enviando arquivo xml para ANVISA</title><content type='html'>Consegui terminar os webservices oficiais para o SNGPC da ANVISA.&lt;br /&gt;&lt;br /&gt;O que deu mais trabalho foi o envio de arquivo. Pela descrição do serviço, precisariamos passar o &amp;lt;email&amp;gt;, &amp;lt;senha&amp;gt;, &amp;lt;arquivo&amp;gt; e &amp;lt;hash&amp;gt; desse arquivo como parametros. Dito assim ( e também pelo dá pra entender pelo manual do SNGPC ) o parametro &amp;lt;arquivo&amp;gt; deveria ser o path completo do arquivo. Mas não conseguia fazer funcionar. Já partindo pra apelação, fazendo todo tipo de teste, inclui todo o conteúdo do arquivo dentro do parametro &amp;lt;arquivo&amp;gt;. Deu erro, mas um erro diferente. Pesquisei um pouco mais e descobri que não deveria passar o arquivo com os caracteres '&amp;lt;' e '&amp;gt;', devendo substituir por '&amp;amp;lt;' e '&amp;amp;gt;'. Pronto ! Arquivo transferido, hash confirmado, tudo OK !&lt;br /&gt;&lt;br /&gt;Só falta agora ler o inventário inicial da ANVISA pra terminar essa comunicação com o SNGPC. Dá até pra gerar uma classe, lib, dll ou até liberar os fontes mesmo pra quem quiser alterar ou entender mais o funcionamento do objeto XMLHTTPRequest.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944203584010482802-8419736223116462811?l=angeiras.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://angeiras.blogspot.com/feeds/8419736223116462811/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://angeiras.blogspot.com/2011/04/enviando-arquivo-xml-para-anvisa.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/8419736223116462811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/8419736223116462811'/><link rel='alternate' type='text/html' href='http://angeiras.blogspot.com/2011/04/enviando-arquivo-xml-para-anvisa.html' title='Enviando arquivo xml para ANVISA'/><author><name>Manoel Angeiras</name><uri>http://www.blogger.com/profile/15691566354434118221</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944203584010482802.post-5197832715100912175</id><published>2011-04-23T13:25:00.000-07:00</published><updated>2011-04-23T13:39:49.304-07:00</updated><title type='text'>Consumindo webservices</title><content type='html'>&lt;div style="text-align: justify;"&gt;Consegui finalmente consumir meu primeiro webservice com o xHarbour 1.0.0.&lt;/div&gt;&lt;br /&gt;Usando o schema do SNGPC, validei o email/senha do usuário no SNGPC, verifiquei o status de um arquivo XML enviado e estou finalizando a transferencia de arquivo ( ainda não tá funcionando. A mensagem não é muito esclarecedora e o manual do SNGPC não ajuda em nada, mas tá quase pronto ).&lt;br /&gt;&lt;br /&gt;Pra validar o schema SNGPC usei a versão free do &lt;a href="http://www.soapui.org/"&gt;SoapUI&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944203584010482802-5197832715100912175?l=angeiras.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://angeiras.blogspot.com/feeds/5197832715100912175/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://angeiras.blogspot.com/2011/04/consumindo-webservices.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/5197832715100912175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/5197832715100912175'/><link rel='alternate' type='text/html' href='http://angeiras.blogspot.com/2011/04/consumindo-webservices.html' title='Consumindo webservices'/><author><name>Manoel Angeiras</name><uri>http://www.blogger.com/profile/15691566354434118221</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944203584010482802.post-3692481931210187739</id><published>2011-04-21T11:29:00.000-07:00</published><updated>2011-04-23T13:39:35.865-07:00</updated><title type='text'>Ler inventario da ANVISA para o SNGPC</title><content type='html'>&lt;div style="text-align: justify;"&gt;Já vi em diversos softwares comerciais a importação do inventário da ANVISA no SNGPC. Não consta da definição do WSDL a operação de importação, então enviei um email para a equipe técnica da ANVISA perguntando como fazer.&lt;/div&gt;Nada feito. Eles sabem como esses softwares processam as requisições, mas como não é um procedimento oficial, não podem descrever.&lt;br /&gt;Vamos pesquisar !&lt;br /&gt;Baixei o&amp;nbsp;&lt;a href="http://www.fiddler2.com/fiddler2/"&gt;fiddler2&lt;/a&gt;,&amp;nbsp; e comecei a testar os requests do browser com a página do SNGPC e as respostas do servidor.Acho que dá pra fazer tudo com o objeto XMLHTTPRequest. Só fico em dúvida pois uso ainda a versão 1.0.0 do xHarbour. Talvez seja hora de migrar definitivamente para o Harbour, principalmente agora com o suporte ao JSON, muito mais simples de trabalhar que o XML.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944203584010482802-3692481931210187739?l=angeiras.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://angeiras.blogspot.com/feeds/3692481931210187739/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://angeiras.blogspot.com/2011/04/post-2.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/3692481931210187739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/3692481931210187739'/><link rel='alternate' type='text/html' href='http://angeiras.blogspot.com/2011/04/post-2.html' title='Ler inventario da ANVISA para o SNGPC'/><author><name>Manoel Angeiras</name><uri>http://www.blogger.com/profile/15691566354434118221</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6944203584010482802.post-7650361961383697290</id><published>2011-04-20T05:05:00.000-07:00</published><updated>2011-04-23T13:39:18.900-07:00</updated><title type='text'>Início</title><content type='html'>&lt;div style="text-align: justify;"&gt;O objetivo é explorar as possibilidades do (x)Harbour. Estou cada vez mais convencido que dá pra fazer tudo : fazer aplicações web, ler conteúdo de redes sociais, criar interface para o twitter. É isso que pretendo fazer aqui, pra essas ideias nao ficarem em um canto qualquer dos meus hds e que mais pessoas usem essa fantástica ferramenta.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6944203584010482802-7650361961383697290?l=angeiras.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/7650361961383697290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6944203584010482802/posts/default/7650361961383697290'/><link rel='alternate' type='text/html' href='http://angeiras.blogspot.com/2011/04/post-1.html' title='Início'/><author><name>Manoel Angeiras</name><uri>http://www.blogger.com/profile/15691566354434118221</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
