Ir para conteúdo


Foto

Http Post


  • Por favor, faça o login para responder
16 respostas neste tópico

#1 Rob

Rob

    Membro

  • Membros
  • Pip
  • 11 posts
  • Locationrio de Janeiro

Postado 08 maio 2017 - 02:32

Boa tarde galera , esse eh meu primeiro post aqui no forum , gostaria de saber se eh possivel atraves de uma aplicacao cliente/servidor, enviar dados via http 'post' ao cliente , e este cliente entao , ao receber os dados , responder , nao quero utilizar as funcoes nativas do Autoit como tcprecv  , gostaria de utilizar http post , estou querendo criar um Http CHAT

 

Desde ja agradeco a ajuda !!!

Um abraco !

PS : teclado esta desconfigurado , perdoem a falta de acentuacao !



#2 Luigi

Luigi

    Administrador

  • Administradores (Adm)
  • PipPipPipPipPip
  • 601 posts
  • LocationCWB

Postado 08 maio 2017 - 02:44

Ola, procure por "WinHttpRequest.5.1", há exemplos aqui no forum.

#3 Rob

Rob

    Membro

  • Membros
  • Pip
  • 11 posts
  • Locationrio de Janeiro

Postado 08 maio 2017 - 02:59

Blz Luigi , obrigado pela resposta , vou dar mais uma buscada , de onde estou  nao tenho o codigo em maos , mas funciona bem pra conectar via WinHttpRequest , ate que quando o cliente envia uma resposta , ai me da erro no '$oHTTP.Send' , seria mais ou menos isso , PD : O cliente recebe a conexao via POST , mas envia a resposta via socket usando TCPsend , talvez seja esse o erro



#4 Luigi

Luigi

    Administrador

  • Administradores (Adm)
  • PipPipPipPipPip
  • 601 posts
  • LocationCWB

Postado 08 maio 2017 - 03:26

se possivel, posta o codigo, nem que seja com dados ficticios

#5 Rob

Rob

    Membro

  • Membros
  • Pip
  • 11 posts
  • Locationrio de Janeiro

Postado 08 maio 2017 - 03:31

seria +- isso

 

 

Servidor:



Func _HTTP_Post($url, $postdata = '')
    Local $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
    $oHTTP.Open("POST", $url, False)
    If (@error) Then Return SetError(1, 0, 0)
    $oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
    $oHTTP.Send($postdata)
    If($oHTTP.Status<>200) Then Return False
    Return $oHTTP.ResponseText
EndFunc  
 

 

O cliente recebe a mensagem e envia:

 

tcpSend($Socket , 'Eu estou bem e vc ?')

 

 

O problema e que nao chega no servidor a resposta , me da erro no $oHTTP.Send($postdata)

 

Desculpa o rascunho  !


Editado por Rob, 08 maio 2017 - 03:32 .


#6 Luigi

Luigi

    Administrador

  • Administradores (Adm)
  • PipPipPipPipPip
  • 601 posts
  • LocationCWB

Postado 08 maio 2017 - 03:46

vou dar uma sugestao, procura por um delay/wait no codigo.

nao do autoit, o proprio httprequest tem wait.

eu tenho exemplo no outro pc, mas sem acesso agora.

#7 Luigi

Luigi

    Administrador

  • Administradores (Adm)
  • PipPipPipPipPip
  • 601 posts
  • LocationCWB

Postado 08 maio 2017 - 03:47

$postdata é um string né?

#8 Luigi

Luigi

    Administrador

  • Administradores (Adm)
  • PipPipPipPipPip
  • 601 posts
  • LocationCWB

Postado 08 maio 2017 - 03:48

tá usando ser error certinho, curti

#9 Rob

Rob

    Membro

  • Membros
  • Pip
  • 11 posts
  • Locationrio de Janeiro

Postado 08 maio 2017 - 04:50

Blz Luigi , vou dar uma olhada ver se agregando um delay funciona , e sim , eh uma string , por alguma razao o editor nao mostrou a chamada na funcao , mas era +- isso

 

_httppost(@Ipaddress & ':' & Porta  , 'Oi tudo bem ?')

 

Chega certinho no servidor , conecta perfeito via POST , ai desde o servidor eu envio outra string via tcpSend

 

tcpsend($Socket , 'Eu vou bem e vc ?')

 

Acredito que essa resposta deveria voltar ao cliente e aparecer via $oHTTP.ResponseText certo ?



#10 Luigi

Luigi

    Administrador

  • Administradores (Adm)
  • PipPipPipPipPip
  • 601 posts
  • LocationCWB

Postado 08 maio 2017 - 06:04

Veja o penultimo link

Por favor Login ou se não possuir um conta Registre-se para ver o conteúdo escondido



Client em AutoIt, enviando por HttpRequest
Server em AutoIt, enviando por TcpSend

É isso?

Editado por Luigi, 08 maio 2017 - 06:12 .


#11 Rob

Rob

    Membro

  • Membros
  • Pip
  • 11 posts
  • Locationrio de Janeiro

Postado 08 maio 2017 - 06:26

Client em AutoIt, enviando por HttpRequest
Server em AutoIt, enviando por TcpSend

É isso?

 

 

Exatamente !

Tinha dado uma olhada antes neste link mas gera o mesmo erro em $http.send() , 

Vou rever o codigo mais detalhadamente , a conexao eh estavel aparentemente , o cliente envia a primeira resposta e conecta no servidor bem , so gera o erro no momento que o servidor envia a resposta de volta , se ele nao envia a resposta de volta , permanece conectado normal

Estranho ne ? Em tcpsend e tcprecv , nativas do Autoit funciona bem , mas gostaria de fazer com http e me gera erro


Editado por Rob, 08 maio 2017 - 06:33 .


#12 Luigi

Luigi

    Administrador

  • Administradores (Adm)
  • PipPipPipPipPip
  • 601 posts
  • LocationCWB

Postado 08 maio 2017 - 07:33

Por favor Login ou se não possuir um conta Registre-se para ver o conteúdo escondido

Não sei se vai adiantar...

 

No servidor, a cada quanto tempo você lê o TCPReceiv?

Você mantêm o socket aberto ou fecha a loop?

 

Veja se ajuda essa base/modelo/exemplo de

Por favor Login ou se não possuir um conta Registre-se para ver o conteúdo escondido

.


Editado por Luigi, 08 maio 2017 - 08:55 .


#13 Rob

Rob

    Membro

  • Membros
  • Pip
  • 11 posts
  • Locationrio de Janeiro

Postado 08 maio 2017 - 10:48

Obrigado Luigi , vou testar aqui e te comento

 

O cliente fica em loop o tempo todo com tcprecv aguardando conexao, assim que recebe algum dado , exibe a conexao no CHAT , logo envio pelo socket a esta conexao via tcpsend uma mensagem , ai da error no servidor em $http.send() , vou ter o codigo em maos amanha e subo , ai fica mais facil de ajudar

 

Obrigado !!!



#14 Rob

Rob

    Membro

  • Membros
  • Pip
  • 11 posts
  • Locationrio de Janeiro

Postado 09 maio 2017 - 11:01

Boa noite , deixo um rascunho do codigo



#15 Rob

Rob

    Membro

  • Membros
  • Pip
  • 11 posts
  • Locationrio de Janeiro

Postado 10 maio 2017 - 12:12

desculpe o post duplo , nao consigo acessar sem proxy , nem postar o codigo , apenas comentar ...Sempre que tento postar um codigo , fica 'salvando post' e bloqueia meu ip , ai tenho que entrar por proxy

Editado por Rob, 10 maio 2017 - 12:16 .


#16 Rob

Rob

    Membro

  • Membros
  • Pip
  • 11 posts
  • Locationrio de Janeiro

Postado 10 maio 2017 - 12:19

Essa eh a mensagem que aparece quando tento entrar do meu IP , aconteceu mais cedo desde o meu trabalho e agora aqui de casa Unable to connect Firefox cant establish a connection to the server at forum.autoitbrasil.com. The site could be temporarily unavailable or too busy. Try again in a few moments. If you are unable to load any pages, check your computers network connection. If your computer or network is protected by a firewall or proxy, make sure that Firefox is permitted to access the Web.

#17 Rob

Rob

    Membro

  • Membros
  • Pip
  • 11 posts
  • Locationrio de Janeiro

Postado 10 maio 2017 - 11:28

Galera nao consigo postar o esboço do codigo aqui , deixo o link do pastebin

Por favor Login ou se não possuir um conta Registre-se para ver o conteúdo escondido






0 usuário(s) está(ão) lendo este tópico

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

Documentação OnLine de referência