Encerrar objeto com componente "Microsoft.XmlHttp"

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

Moderador: Moderadores

cMach
Usuário Nível 1
Usuário Nível 1
Mensagens: 23
Registrado em: 21 Out 2019 08:18
Localização: rio de janeiro

Encerrar objeto com componente "Microsoft.XmlHttp"

Mensagem por cMach »

Bom dia pessoal,
Alguém sabe informar qual função encerra um objeto criado com componente "Microsoft.XmlHttp" no xHarbour ? Estou tentando o close() mas dá erro ...

local obj
local hhash := hash()

...
obj:CreateObject( "Microsoft.XmlHttp")
obj:open("GET", url,.f.)
obj:send()
hb_jsonDecode(obj:ResponseBody, @hhash)
....

obj:close()

ERRO:
-------------------- Internal Error Handling Information ---------------------

Subsystem Call ....: Microsoft.XmlHttp
System Code .......: 3
Default Status ....: .F.
Description .......: DISP_E_MEMBERNOTFOUND
Operation .........: CLOSE
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Encerrar objeto com componente "Microsoft.XmlHttp"

Mensagem por sygecom »

Tenho usado assim:
obj:=nil
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
cMach
Usuário Nível 1
Usuário Nível 1
Mensagens: 23
Registrado em: 21 Out 2019 08:18
Localização: rio de janeiro

Encerrar objeto com componente "Microsoft.XmlHttp"

Mensagem por cMach »

O que ocorre é que se a requisição "GET" não for atendida na primeira tentativa, da segunda em diante no loop ela não obtém o retorno, mas se fechar a aplicação e entrar novamente ai vai. Estive pensando se o problema não seria por eu não estar encerrando o objeto criado.

ST = .f.
do while ST <> .t.
obj:=CreateObject("Microsoft.XmlHttp")
obj:Open( "POST", url, .f. )
obj:Send(file.txt)
hb_jsonDecode(obj:ResponseBody, @hhash)

if hhash["message"] == "ok"
url2 = "hhash["url"]
TRY
obj:=CreateObject( "Microsoft.XmlHttp")
obj:Open( "GET", url2, .f. )
obj:Send()
hb_jsonDecode(obj:ResponseBody, @hhash2)
ST = .t.
CATCH oError
loop
END
else
exit
endif
enddo
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Encerrar objeto com componente "Microsoft.XmlHttp"

Mensagem por alxsts »

Olá!

O método close não existe. Tente usar o método abort para interromper uma requisição, antes de tentar novamente.
[]´s
Alexandre Santos (AlxSts)
cMach
Usuário Nível 1
Usuário Nível 1
Mensagens: 23
Registrado em: 21 Out 2019 08:18
Localização: rio de janeiro

Encerrar objeto com componente "Microsoft.XmlHttp"

Mensagem por cMach »

alxsts,
Acho que acertou em cheio!
Vou fazer mais uns testes..
Valeu meu camarada!
cMach
Usuário Nível 1
Usuário Nível 1
Mensagens: 23
Registrado em: 21 Out 2019 08:18
Localização: rio de janeiro

Encerrar objeto com componente "Microsoft.XmlHttp"

Mensagem por cMach »

Testei novamente. Na verdade o problema persiste.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Encerrar objeto com componente "Microsoft.XmlHttp"

Mensagem por JoséQuintas »

Já tentou confirmar se não está usando errado?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Encerrar objeto com componente "Microsoft.XmlHttp"

Mensagem por asimoes »

Olá

Um exemplo obtido da página do Macoratti
Observe a última linha: Set oHttpRequest = Nothing em harbour seria oHttpRequest := Nil
http://www.macoratti.net/xml_vb3.htm

Código: Selecionar todos

resolveTimeout = 300
conectaTimeout = 300
sendTimeout = 300
receiveTimeout = 300

verificaURL = "http://www.macoratti.net/macoratti.htm"

Set oHttpRequest = CreateObject("MSXML2.ServerXMLHTTP")

with oHttpRequest
  .SetTimeouts resolveTimeout,conectaTimeout,sendTimeout,receiveTimeout
  .Open "GET" , verificaURL
  .Send

  Select case .Status
    case 200 'ok
       Response.write verificaURL & " é uma URL válida."
    case 404 'Pagina não localizada
       Response.Write verificaURL & " não foi encontrado."
    case Else
       Response.Write " Ocorreu um erro não previsto de HTTP : " & .Status
  End Select
End With

Set oHttpRequest = Nothing
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Encerrar objeto com componente "Microsoft.XmlHttp"

Mensagem por JoséQuintas »

asimoes escreveu:Observe a última linha: Set oHttpRequest = Nothing em harbour seria oHttpRequest := Nil
Vb é interpretado.
Atribuição de objetos é com SET, e não com sinal de igual
Acaba exigindo a mesma coisa pra destruir variáveis que guardam objetos.

No Harbour não precisa nada, porque ele gerencia direito suas variáveis.

Se no XHarbour precisa, então é defeito no XHarbour com variáveis.
Variáveis PRIVATE, PUBLIC, não declaradas, e MINIGUI, acabam sendo vilões pra descontrole total sobre variáveis.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
cMach
Usuário Nível 1
Usuário Nível 1
Mensagens: 23
Registrado em: 21 Out 2019 08:18
Localização: rio de janeiro

Encerrar objeto com componente "Microsoft.XmlHttp"

Mensagem por cMach »

Estou pensando em deixar o xHarbour e passar a utilizar o Harbour mesmo.
Tem alguma dica sobre a melhor versão e como instalar, compilar, etc..
obg
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Encerrar objeto com componente "Microsoft.XmlHttp"

Mensagem por JoséQuintas »

cMach escreveu:Estou pensando em deixar o xHarbour e passar a utilizar o Harbour mesmo.
Tem alguma dica sobre a melhor versão e como instalar, compilar, etc..
Meu uso todos já conhecem:

Baixo o compilador C mingw x86_x64 (50MB), e os fontes do Harbour 3.4.

Com isso gero o que uso, podendo compilar em 32 ou 64 bits.

Se precisar SSL, email do tipo gmail, hbMysql, ou outro opcional, vai precisar baixar arquivos adicionais de outros lugares. Como não uso essas coisas, só os dois downloads que mencionei me bastam.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder