InetGet mit POST statt GET

  • 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

    Nur keine Hektik - das Leben ist stressig genug

  • 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.

  • 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...

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Servus...

    Nach meiner Meinung die beste POST möglichkeit vom Großmeister ;)
    Denk dran Return ist nen Array ;)

    Spoiler anzeigen
    [autoit]

    ;===============================================================================
    ;
    ; 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
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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, 8) <> '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

    [/autoit]

    MFG chris :D