API para capturar C...
 
Notifications
Clear all

API para capturar CNPJ no site

4 Posts
3 Usuários
0 Likes
3,051 Visualizações
(@el-camilo)
Posts: 2
New Member
Topic starter
 

Bom dia a todos.
Sou novo no fórum e já tenho um desafio para todos...rsrs
Já tentei pesquisar em todos os lugares, mas não consegui ainda.
O problema é o seguinte:

Tenho um código no VBA que vai buscar os dados do CNPJ na receita federal, através da url: http://receitaws.com.br/v1/cnpj/00352294007395
Funciona muito bem, mas alguns cnpjs não retornam dados, fazendo com que a url entre em time out com o erro 504, a exemplo do cnpj acima que citei "00352294007395".

Tudo bem se não retornar os dados desses CNPJs, mas o problema é que quando o comando xmlHttp.send é executado para validar a página, demora muito para retornar se a página é Verdadeira ou Falsa.

Preciso de um timeout para que o comando demore apenas 3 segundos, se não responder, dê um exit sub....

Alguém pode ajudar?
Segue o arquivo anexo com o código.

 
Postado : 15/09/2016 8:26 am
Issamu
(@issamu)
Posts: 605
Honorable Member
 

Olá El Camilo!

Coincidentemente comecei ontem a desenvolver uma ferramenta praticamente igual, utilizando este mesmo webservice para trazer as informações de cnpj.

Ontem consegui ajustar o método para converter a resposta que vem em Json para estrutura de banco de dados, e foi bom ver seu post, pois dependendo do número do cnpj a consultar a API dá erro de Time out. A solução é utilizar o comando .SetTimeouts antes de abrir a requisição no site. No seu código ficaria:

Function URLExists(url As String) As Boolean
    Dim Request As Object
    Dim ff As Integer
    Dim rc As Variant
    
    On Error GoTo EndNow
    Set Request = CreateObject("WinHttp.WinHttpRequest.5.1")
    
    Request.setTimeouts 3000, 3000, 3000, 3000
    With Request
      .Open "GET", url, False
      .send
      rc = .StatusText
    End With
    Set Request = Nothing
    If rc = "OK" Then URLExists = True
    
    Exit Function
EndNow:
End Function

Onde o 3000 equivale aos 3 segundos.

Abraços!

Rafael Issamu F. Kamimura
Moderador Oficial Microsoft Community - MCC (Contribuidor do Microsoft Community)
http://zip.net/bjrt0X - http://zip.net/bhrvbR
Foi útil? Clique na mãozinha
Conheça: http://excelmaniacos.com/

 
Postado : 15/09/2016 10:00 am
(@el-camilo)
Posts: 2
New Member
Topic starter
 

Olá Issamu.
Perfeito, era isso mesmo, apesar de que ainda fica uns 5 segundos colocando 3000.
Muito obrigado...

 
Postado : 15/09/2016 10:37 am
(@alexrodel)
Posts: 7
Active Member
 
Postado por: @issamu

Olá El Camilo!

Coincidentemente comecei ontem a desenvolver uma ferramenta praticamente igual, utilizando este mesmo webservice para trazer as informações de cnpj.

Ontem consegui ajustar o método para converter a resposta que vem em Json para estrutura de banco de dados, e foi bom ver seu post, pois dependendo do número do cnpj a consultar a API dá erro de Time out. A solução é utilizar o comando .SetTimeouts antes de abrir a requisição no site. No seu código ficaria:

Function URLExists(url As String) As Boolean
    Dim Request As Object
    Dim ff As Integer
    Dim rc As Variant
    
    On Error GoTo EndNow
    Set Request = CreateObject("WinHttp.WinHttpRequest.5.1")
    
    Request.setTimeouts 3000, 3000, 3000, 3000
    With Request
      .Open "GET", url, False
      .send
      rc = .StatusText
    End With
    Set Request = Nothing
    If rc = "OK" Then URLExists = True
    
    Exit Function
EndNow:
End Function

Onde o 3000 equivale aos 3 segundos.

Abraços!

Boa tarde @issamu

Por acaso você tem a ferramenta de consulta de CNPJ ainda? e poderia disponibilizar 

 
Postado : 25/08/2020 5:05 pm