Hey@all
Wer weiß wie man einen InetGet (oder so was ähnliches) machen kann, bei dem man Post statt Get machen kann.
Dies brauche ich für ein Formular. Da es nicht mit Get funktioniert. Wer kann mir weiterhelfen?
thx4help
Hey@all
Wer weiß wie man einen InetGet (oder so was ähnliches) machen kann, bei dem man Post statt Get machen kann.
Dies brauche ich für ein Formular. Da es nicht mit Get funktioniert. Wer kann mir weiterhelfen?
thx4help
Um POST-Daten zu versenden musst du entweder das komplette HTTP-Protokoll über die TCP-Funktionen selbst senden oder du verwendest WinHTTP als Basis. Das ist beides aber nicht so trivial wie InetGet.
InetGet lädt Dateien von einer URL herunter... :pinch:
Ich glaube du suchst die _IEForm... Funktionen...
Ohhh stimmt. Die IE_Create Funktion thx man!
Ich glaub, du hast den Befehl noch nicht so ganz verstanden...
Der Befehl läd eine Datei aus dem Internet runter...
Edit: Oh, ein bisschen zu spät...
Ohhh stimmt. Die IE_Create Funktion thx man!
Wobei ich mcih auch Prog@ndy anschließe. WinHTTP und TCP sind die definitiv "besseren" Varianten. Allein der Geschwindigkeitsvorteil ist enorm!.
Servus...
Nach meiner Meinung die beste POST möglichkeit vom Großmeister
Denk dran Return ist nen Array
;===============================================================================
;
; Function Name: _INetGetSourcePost()
; Description: Gets the source from an URL without writing a temp file and you can send a Post.
; Parameter(s): $sURL = The URL of the site.
; $sPost = The Post to send
; Requirement(s): -
; Return Value(s): On Success - Return a array with $aReturn[0] = Backheader and $aReturn[1] = Sourcecode
; On Failure - 0 and sets @ERROR
; @error = 1: Post or URL is nothing
; @error = 2: Error by RegularExpression
; @error = 3: $sHost or $sHttp1 is nothing
; @error = 4: Can not get IP of Host
; @error = 5: Can not connect to host
; @error = 6: Nothing can be send
; @error = 7: Connection abborted while receiving
; Author(s): GtaSpider
;
;===============================================================================
Func _INetGetSourcePost($sURL, $sPost)
Local $iSocket, $sHeader, $sRecv, $iIP, $sHost, $aRegExp, $sHttp1,$iErr,$iSend,$aReturn[2]
If $sURL = '' Or $sPost = '' Then Return SetError(1, 0, 0)
If StringLeft($sURL, 7) <> 'http://' And StringLeft($sURL, <> 'https://' Then $sURL = "http://" & $sURL
If StringRight($sURL, 1) <> "/" Then $sURL &= "/"
$aRegExp = StringRegExp($sURL, "http?://(.*?)/", 3)
If @error Then Return SetError(2, 0, 0)
$sHost = $aRegExp[0]
If $sHost = '' Then Return SetError(3, 0, 0)
$sHttp1 = StringTrimLeft($sURL,StringInStr($sURL,"/",-1,3)-1)
If $sHttp1 = '' Then Return SetError(3, 0, 0)
$sHeader = "POST " & $sHttp1 & " HTTP/1.1" & @CRLF & _
"Host: " & $sHost & @CRLF & _
"User-Agent: AutoIt v3" & @CRLF & _
"Content-Length: " & StringLen($sPost) & @CRLF & @CRLF & $sPost
TCPStartup() ;If not already done
$iIP = TCPNameToIP($sHost)
If $iIP = '' Or StringInStr($iIP, ".") = 0 Then Return SetError(4, 0, 0)
$iSocket = TCPConnect($iIP, 80)
If @error Or $iSocket < 0 Then Return SetError(5, 0, 0)
$iSend = TCPSend($iSocket, $sHeader)
If @error Or $iSend < 1 Then Return SetError(6, 0, 0)
While 1
$sRecv = TCPRecv($iSocket, 1024)
$iErr = @error
If $sRecv <> '' Then
While 1
$sRecv &= TCPRecv($iSocket, 1024)
If @error Then ExitLoop 2
WEnd
EndIf
If $iErr Then Return SetError(7,0,0)
WEnd
$aReturn[0] = StringLeft($sRecv,StringInStr($sRecv,@CRLF&@CRLF)-1)
$aReturn[1] = StringTrimLeft($sRecv,StringLen($aReturn[0])+4)
Return $aReturn
EndFunc ;==>_INetGetSourcePost
MFG chris