Página 1 de 1

Enviar datos por el metodo POST a un formulario

Publicado: 16 Sep 2010, 07:25
por dertin
Hola, tengo un problema :smt017 , no entiendo como hacer lo mismo que hice en Perl (mas abajo dejo el código en Perl), en el lenguaje de AutoIT con mejoras..

Quiero pasarlo a una Funcion mi Script en Perl donde:
- Envié datos por el método POST ( /register.php?username=User&password=1234 ) a un formulario en PHP.
- Si no hay internet o no se puede conectar al host (sitio web donde esta el formulario) osea el Socket de conexión durante X intentos falle, y entre cada intento de prueba tenga una espera de X tiempo, si así falla devuelva error la función.
- Y si los datos fueron enviados, devuelva un valor para indicar que salio todo bien.
...
Les dejo el fragmento del Script que programe en Perl (es el código que me interesa pasar a Autoit y mejorarlo):

Código: Seleccionar todo

use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request;

my $ua = LWP::UserAgent->new;
$ua->agent("Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)");
	
my $url= 'http://ip.globalpatrol.net/rds/register.php?username='.$ipfetchusername.'&password1=1234&password2=1234&fullname=Elcodigo DaVinci&[email protected]';
	
my $req = HTTP::Request->new(POST => $url);
my $response = $ua->request($req);
my $content = $response->content();

print "Content-type: text/html\n\n";
print $content;
Bueno este es mi código primitivo en AutoIT (no es una función!!, busco hacerlo en una función y controlar los valores de retorno)
Este código me da error!, tal vez puedan ver a simple vista que error cometo al usar HTTP.au3 si tengo otra alternativa, o como prodia pensarlo mejor:

Código: Seleccionar todo

#include <HTTP.au3>
#include <String.au3>

Dim $IPFetchUsername = @ComputerName & @UserName & @SEC
$IPFetchUsername = StringRegExpReplace($IPFetchUsername,'[^[:alnum:]]','')
$IPFetchUsername = StringLower($IPFetchUsername)
Dim $host = "http://ip.globalpatrol.net"
Dim $page = "/rds/register.php"
$vars = "username=" & $IPFetchUsername & "&password1=1234&password2=1234&fullname=ElcodigoDaVinci&[email protected]"
$url = $page & "?" & _HTTPEncodeString($vars)
$socket = _HTTPConnect($host)
$get = _HTTPPost($host, $url, $socket)
If @error Then
MsgBox(0,"Info Error -" & $IPFetchUsername, $get)
EndIf
MsgBox(0,"Info", $IPFetchUsername & " - "& $get)
_HTTPClose($socket)
Si queda algo en Duda, preguntarme!! :smt001

Gracias por leer, un saludo att. Dertin! :smt001

Enviar datos por el metodo POST a un formulario (Solucionado

Publicado: 17 Sep 2010, 05:30
por dertin
Hola, eh resulto mi problema aqui les dejo el codigo de la funcion, que envia datos por el metodo POST a un formulario web, registra un usuario, en este caso para una cuenta de DNS, intentando 30 veces, con espera entre cada intento.. [ descomentar funcion Sleep() ]
Adjunto les dejo la liberia HTTP.au3

Código: Seleccionar todo

#include <HTTP.au3>
#include <Array.au3>

Dim $contador = 0

Func _CreateDNS()

	Dim $IPFetchUsername = @ComputerName & @UserName & @SEC
	$IPFetchUsername = StringRegExpReplace($IPFetchUsername,'[^[:alnum:]]','')
	$IPFetchUsername = StringLower($IPFetchUsername)

	Dim $host = "www.ip.globalpatrol.net"
	Dim $page = "/rds/register.php?"
	Dim $vars = "username=" & $IPFetchUsername & "&password1=xxxx&password2=xxxx&fullname=ElcodigoDaVinci&[email protected]"

	$vars = _HTTPEncodeString($vars)

	Dim $socket = _HTTPConnect($host)
	Dim $post = _HTTPPost($host, $page, $socket, $vars)
	; Dim $recv = _HTTPRead($socket, 1)
	; _ArrayDisplay($recv)

	If @error Then
		MsgBox(0,"Info Error", $post)
		;sleep(6000)
		Return 1
	Else
		MsgBox(0,"Info OK", $post)
		_HTTPClose($socket)
		Return 0
	EndIf

EndFunc

Func _Main()
	If _CreateDNS() = 1 Then
		$contador = $contador + 1
		If $contador = 30 Then
			MsgBox(0,"Info Error", "Critical Error!")
			Exit
		Else
		_Main()
		EndIf
	Else
		MsgBox(0,"Info OK", "UserDNS Registrado!")
	EndIf
EndFunc

_Main()
:smt001 Si alguin tiene alguna duda, o quiere preguntar algo sobre el codigo, le respondo con gusto.
Saluda, dertin :smt006