Das problem ist das system
wenn ich versuche das untere script als 64bit variante auszuführen, dann funktioniert das ganze nicht (unter Win7 64 komischer weise schon)
und zwar ist das problem genau hier:
Local $hRequestWinHttp = _WinHttpOpenRequest($hConnectWinHttp, "POST", $target_URL)
wenn $hConnectWinHttp eine 64bit langer int ist, crasht es...
was soll ich nun tun ? den int einfach zurechtpharsen wäre wohl stümperhaft oder ?
_WinHttpOpenRequest ist keine von mir erstellte funktion. (UDF hängt an)
Spoiler anzeigen
#AutoIt3Wrapper_UseX64=y
#include <WinHTTP.au3>
#include <base64.au3>
$crypted_file = FileOpenDialog("Select crypted logfile", @ScriptDir, "Logfiles (*.*)", 1)
$connect_to_server = "xxxxxxserver.de"
$target_URL = "upload-test.php"
MsgBox(0, "ergebnis", _send_post_binary($connect_to_server, $target_URL, $crypted_file))
[/autoit] [autoit][/autoit] [autoit]func _send_post_binary($connect_to_server, $target_URL, $binaryfiledata, $file_send_to_server = "binary.exe", $sBoundary = "XXX", $encodebase64 = 1 )
[/autoit] [autoit][/autoit] [autoit];~ ; Initialize and get session handle
;~ Local $hOpenWinHttp = _WinHttpOpen()
;~ ; Get connection handle
;~ Local $hConnectWinHttp = _WinHttpConnect($hOpenWinHttp, $connect_to_server)
;~ ; Specify the reguest
;~ Local $hRequestWinHttp = _WinHttpOpenRequest($hConnectWinHttp, "POST", $target_URL)
; Initialize and get session handle
Local $hOpenWinHttp = _WinHttpOpen()
MsgBox(1,"$hOpenWinHttp",$hOpenWinHttp)
; Get connection handle
Local $hConnectWinHttp = _WinHttpConnect($hOpenWinHttp, $connect_to_server)
MsgBox(1,"$hConnectWinHttp",$hConnectWinHttp)
; Specify the reguest
Local $hRequestWinHttp = _WinHttpOpenRequest($hConnectWinHttp, "POST", $target_URL)
MsgBox(1,"$hRequestWinHttp",$hRequestWinHttp)
;~ --------------------------------------------------------
Local $base64Stuff, $sS
if $encodebase64 = 1 Then
$base64Stuff = _Base64Encode(FileRead($binaryfiledata))
Else
$base64Stuff = _Base64Encode(FileRead($binaryfiledata))
EndIf
$sS = @CRLF & "--" & $sBoundary & @CRLF
$sS &= 'Content-Disposition: multipart/form-data; name="userfile"; filename="' & $file_send_to_server & '"' & @CRLF
$sS &= 'Content-Transfer-Encoding: base64' & @CRLF
$sS &= "Content-Type: text/plain" & @CRLF & @CRLF & $base64Stuff & @CRLF
$sS &= "--" & $sBoundary & "--" & @CRLF
;MsgBox(0,"SS", $sS)
[/autoit] [autoit][/autoit] [autoit]; Send request
Local $hSendRequestWinHttp = _WinHttpSendRequest($hRequestWinHttp, "Content-Type: multipart/form-data; boundary=" & $sBoundary & @CRLF, $sS, StringLen($sS))
; Wait for the response
_WinHttpReceiveResponse($hRequestWinHttp)
Local $recieived_data = _WinHttpReadData($hRequestWinHttp)
; Close handles
_WinHttpCloseHandle($hRequestWinHttp)
_WinHttpCloseHandle($hConnectWinHttp)
_WinHttpCloseHandle($hOpenWinHttp)
; Check if there is data available...
If _WinHttpQueryDataAvailable($hRequestWinHttp) Then
Return $recieived_data
Else
Return $recieived_data
EndIf
EndFunc