Como obter response Headers de MSXML2.ServerXMLHTTP.6.0

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

Moderador: Moderadores

Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

Como obter response Headers de MSXML2.ServerXMLHTTP.6.0

Mensagem por NiltonGM »

Pessoal, estou usando a dll MSXML2.ServerXMLHTTP.6.0 para consumir uma API, quanto o status de retorno é 200, beleza, o endpoint específico que estou usando sempre retorna um json, Content-Type: application/json, mas quando o retorno status é entre 400 à 599 pode-se retornar um json de error ou um texto, eu teria que checar o Content-Type para saber se é application/json ou text, qual é o método ou propriedade dessa dll para verificar o Content-Type do header de retorno? Procurei até na documentação oficial da MS mas não achei nada disso, eu só consigo acessar o responseBody e o responseText. Ou seja: Como acesso o cabeçalho HTTP “Content-Type” da MSXML?
Grato.
Nilton Medeiros
nilton@sistrom.com.br
Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

Como obter response Headers de MSXML2.ServerXMLHTTP.6.0

Mensagem por NiltonGM »

**RESOLVIDO**
Só para deixar registrado: Consultei na web, nada, consultei a IA do Bing MS mais confundiu e nada, fui no ChatGPT e voilá, ela me trouxe o método getRensponseHeader("Content-Type"), Bingo!
Em harbour ficou assim:

Código: Selecionar todos

   content_type := conexao:getResponseHeader("Content-Type")
   // Retornou: application/json
Nota: também tem o getResponseAllHeaders() que retorna todos os headers!
Abraços galera Harbour!
Nilton Medeiros
nilton@sistrom.com.br
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:

Como obter response Headers de MSXML2.ServerXMLHTTP.6.0

Mensagem por clodoaldomonteiro »

Boa tarde.

Com essa função, eu consulto um CNPJ num WebService, usando MSXML2.

Código: Selecionar todos

   ////////////////////////////////////////////////////////////////////////////////
   //https://pctoledo.org/forum/viewtopic.php?f=43&p=155455#p155455
   //https://pctoledo.org/forum/viewtopic.php?f=4&t=23628 (com Header)
   //https://pctoledo.org/forum/viewtopic.php?f=4&t=17427 (usando a  hb_JSONDecode( cJSON, @hJSON ) )
   //https://nfe.io/docs/desenvolvedores/rest-api/consulta-de-cnpj-v1/ (para consultas)
Function CNPJ_Consulta( cCnpj )
   Local mSite := "http://receitaws.com.br/v1/cnpj/", oHttp, hCNPJA := Hash(), mJSONCNPJ, hJSON := Hash()
   //mSite := "https://publica.cnpj.ws/cnpj/" //mais completo

   If Len( cCnpj ) <> 14
      REturn NIL
   Endif

   Begin Sequence

      Try
         oHttp := CreateObject("MSXML2.ServerXMLHTTP")
         oHttp:Open("GET", mSite + cCNPJ, .F.)
         oHttp:send()
      CATCH oError
         msg := 'Internet Error: 010' + CRLF
         msg += 'Aviso..: Erro verificado ao fazer requisição de CNPJ no Site indicado.' + HB_Eol()
         msg += 'Site...:' + mSite + HB_Eol()
         msg += 'CNPJ...:' + cCNPJ + HB_Eol()
         msg += cl_getError(oError, .t.)

         msgError ( msg )

         hCNPJA := NIL

         Break
      End

      If Empty( oHttp:responseText )
         hCNPJA := NIL
         Break

      ElseIf '"ERROR"' $ oHttp:responseText
         msg := 'Request error: 015' + CRLF
         msg += 'Aviso..: O retorno da consulta de CNPJ está com erros.' + HB_Eol()
         msg += '- Aguarde um minuto e tente novamente.' + HB_Eol()
         msg += 'Site...:' + mSite + HB_Eol()
         msg += 'CNPJ...:' + cCNPJ + HB_Eol()
         msg += 'Response:' + oHttp:responseText + HB_Eol()
         msg += 'Status..:' + Str(oHttp:status, 3) + HB_Eol()
         msg += cl_getError(, .t.)

         MsgError ( msg, .t. )

         hCNPJA := NIL
         Break

      ElseIf 'Too many' $ oHttp:responseText
         msg := 'Request error: 020' + CRLF
         msg += 'Aviso..: Muitas tentativas de pesquisar CNPJ no Site indicado.' + HB_Eol()
         msg += '- Aguarde um minuto e tente novamente.' + HB_Eol()
         msg += 'Site...:' + mSite + HB_Eol()
         msg += 'CNPJ...:' + cCNPJ + HB_Eol()
         msg += 'Response:' + oHttp:responseText + HB_Eol()
         msg += 'Status..:' + Str(oHttp:status, 3) + HB_Eol()

         MsgAtencao ( msg )

         hCNPJA := NIL
         Break
      Endif

      mJSONCNPJ   := HB_AnsiToOem(oHttp:responseText)

      ADOStringGrava(mJSONCNPJ + CRLF)

      hCNPJA      := JSontoHash( mJSONCNPJ )

      oHttp       := NIL

   End Sequence

   Return hCNPJA
Abraços
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
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

Como obter response Headers de MSXML2.ServerXMLHTTP.6.0

Mensagem por NiltonGM »

Legal Clodoaldo!
Nilton Medeiros
nilton@sistrom.com.br
Responder