Что нового

Установка таймаутов HTTP (WinHttpSetTimeouts)

BSerj

Новичок
Сообщения
3
Репутация
0
Здравствуйте!

Не получается изменить таймауты для HTTP запросов. Функция DllCall возвращает 0 (выделено красным).
Помогите разобраться, что я делаю не так?

ОС: Windows 7 Ultimate x64 SP1
SciTE Version 3.6.6
WinHttp.au3 v1.6.3.9 (github.com/dragana-r/autoit-winhttp/releases)

Код:
#include "WinHTTP.au3"

Global 	$__g_yadisk_http_connect = False, _
		$__g_yadisk_http_open = False
;Global Const $INTERNET_DEFAULT_HTTPS_PORT = 443

_SetUploadTimeouts()

Func _SetUploadTimeouts()

	Local $ret = _WinHttpCheckPlatform()
		   ConsoleWrite ( "_WinHttpCheckPlatform : " & $ret & @CRLF )

	If Not $__g_yadisk_http_connect Then
		$__g_yadisk_http_open = _WinHttpOpen()
		If @error Then Return SetError(1, @error, False)
		   ConsoleWrite ( "$__g_yadisk_http_open : " & $__g_yadisk_http_open & @CRLF )
		$__g_yadisk_http_connect = _WinHttpConnect($__g_yadisk_http_open, 'webdav.yandex.ru', $INTERNET_DEFAULT_HTTPS_PORT)
		If @error Then Return SetError(2, @error, False)
		   ConsoleWrite ( "$__g_yadisk_http_connect : " & $__g_yadisk_http_connect & @CRLF )
	EndIf

	$ret = DllOpen("winhttp.dll")
	ConsoleWrite("DllOpen: " & $ret & @CRLF)
	Local $aCall = DllCall($ret, "bool", "WinHttpSetTimeouts", _
			"handle", $__g_yadisk_http_connect, _
			"int", 60000, _
			"int", 60000, _
			"int", 60000, _
			"int", 60000)
	ConsoleWrite("@error: " & @error & @CRLF)
	ConsoleWrite("$aCall [0]: " & $aCall[0] & @CRLF)
	ConsoleWrite("$aCall [1]: " & $aCall[1] & @CRLF)
	ConsoleWrite("$aCall [2]: " & $aCall[2] & @CRLF)
	ConsoleWrite("$aCall [3]: " & $aCall[3] & @CRLF)
	ConsoleWrite("$aCall [4]: " & $aCall[4] & @CRLF)
	ConsoleWrite("$aCall [5]: " & $aCall[5] & @CRLF)

EndFunc


Log:
_WinHttpCheckPlatform : 1
$__g_yadisk_http_open : 0x00954D80
$__g_yadisk_http_connect : 0x00958B40
DllOpen: 3
@error: 0
$aCall 0: 0
$aCall [1]: 0x00958B40
$aCall [2]: 60000
$aCall [3]: 60000
$aCall [4]: 60000
$aCall [5]: 60000

Увеличение таймаутов нужно для загрузки больших файлов на я.диск через webdav.
 
Автор
B

BSerj

Новичок
Сообщения
3
Репутация
0
Благодарю за ответы.
Да, функцию _WinHttpSetTimeouts пробовал, но видимо подставлял дескриптор от _WinHttpConnect, вместо _WinHttpOpen.
Всё работает. Загрузка на диск больших файлов - тоже!
Извините за беспокойство.
 
Верх