Что нового

HTTPx - отправка POST и GET запросы

armenxxx1

Продвинутый
Сообщения
155
Репутация
56
AutoIt: 3.3.6.1
Версия: 1.0

Категория: Администрирование, Автоматизация, Вспомогательные функции, Интернет, Сеть.

Описание:
Несколько месяцев назад я написал http://autoit-script.ru/index.php/topic,9594.0.html и я решил собрать все необходимое для нормальной работы с POST и GET запросы....


Основные характеристики

1. Отправка POST запрос
2. Отправка POST запрос с файл
3. Тип файла, расположенного на сервере
4. Размер файла расположенного на сервере
5. Дата последней модификации файлов, расположенного на сервере
6. Содержание веб-сайта
7. Отправка GET запрос
8. Скачать файл из Интернета
9. Двоичных код расположенного на сервере файл

Внутри скрипта можно найти примеры ее использования.

Извините, если я пишу неправильно, но я иностранец. Все описания на болгарском языке.


Код/Пример:
Код:
#cs ----------------------------------------------------------------------------
 HTTPx Version: 1.0	
 AutoIt Version: 3.3.6.1
 Author:         http://secrets-bg.com

 Script Function:
	Template AutoIt script.

HTTPx е библиотека съдържаща функции за POST и GET заявки.

Secrets-bg.com разработи скрипт на Autoit съдържащ основни функции за работа със сайт посредствум POST и GET заявки.

Основни функции

1. Изпращане на POST заявка
2. Изпращане на POST заявка с файл
3. Тип на файла намиращ се на сървър
4. Големина на файла намиращ се на сървър
5. Дата на последна модификация на файла намиращ се на сървър
6. Съдържание на интернет страница
7. Изпращане на GET заявка
8. Сваляне на файл от интернет
9. Бинари код на файл от интернет

В самия скрипт можете да намерите примери за работа с него.

#ce ----------------------------------------------------------------------------


Global $sUserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"

;_UserAgent("UserAgent") ;При промяна на User Agent преди всяка команда добавете този ред с посочен от вас User Agent
Func _UserAgent($_UserAgent)
	$sUserAgent = $_UserAgent
EndFunc

#comments-start
	<?php
		$name1 = $_POST['name1'];
		echo $name1;
		$name2 = $_POST['name2'];
		echo $name2;
	?>
#comments-end

;MsgBox(64, "Info", _SendPost("http://HOST/post.php", "name1=TeSt1&name2=TeSt2")) ;Изпраща пост заявка
Func _SendPost($aHost = "", $aPost = "")
	WinHttp()
	$oHTTP.Open("POST", $aHost, false)
	$oHTTP.SetRequestHeader("User-Agent", $sUserAgent)
	$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
	$oHTTP.Send($aPost)
	Return $oHTTP.ResponseText
	$oErrorHandler = 0 ;изключваме обработката на грешки
EndFunc

#comments-start
	<?php
		//Получаване на параметри
		$name1 = $_POST['name1'];
		echo $name1;
		//Получаване на параметри
		$name2 = $_POST['name2'];
		echo $name2;
		//Получаваме името на файла от пост заявката
		$fileName = $_POST['filename'];
		//Получаваме бинари кода на файла чрез пост заявка
		$binaryData = $_POST['data'];

		//Създава се файл с посоченото име от пост заявката
		$fh = fopen("./$fileName.x", 'a+b');
		//Записва се в файла получения бинари код на файла
		fwrite($fh, pack("H*" , $binaryData));
		//Затваря се файла
		fclose($fh);
		echo "1";
	?>	
#comments-end

;MsgBox(64, "Info", _SendFile("http://HOST/postdata.php", @ScriptDir & "\FILE.png", "name1=TeSt1&name2=TeSt2")) ;Изпраща пост заявка с файл
Func _SendFile($aHost = "", $file = "", $aPost = "")
	$hfile = FileOpen($file, 16)
	$sFileTypeName = StringRegExpReplace($file, "^.*\\", "")

	While 1
		$data = FileRead($hfile, 500000)
		If @error Then ExitLoop
		$Data2 = StringTrimLeft($data,2)
		$aData = $aPost & "&filename=" & $sFileTypeName & "&data=" & $Data2

		WinHttp()
		$oHTTP.Open("POST", $aHost, false)
		$oHTTP.SetRequestHeader("User-Agent", $sUserAgent)
		$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
		$oHTTP.Send($aData)
		
		If $hfile = -1 Then
		Else
			If $oHTTP.ResponseText = "" Then 
				For $i = 5 to 1 Step -1
					$oHTTP.Send($aData)
					If $oHTTP.ResponseText = "" Then 
					Else
						ExitLoop
					EndIf
					PingG($aHost)
				Next
			EndIf	
		EndIf
		
	WEnd
	FileClose($hfile)
	If $hfile = -1 Then
		Return ""
	Else
		Return $oHTTP.ResponseText
	EndIf
	$oErrorHandler = 0 ;изключваме обработката на грешки
EndFunc

;MsgBox(64, "Info", _GetFileTipeSizeDate("http://www.google.com/intl/en_ALL/images/logo.gif", 0)) ;Тип на файла
;MsgBox(64, "Info", _GetFileTipeSizeDate("http://www.google.com/intl/en_ALL/images/logo.gif", 1)) ;Големина на файла
;MsgBox(64, "Info", _GetFileTipeSizeDate("http://www.google.com/intl/en_ALL/images/logo.gif", 2)) ;Дата на последна модефикация на файл
Func _GetFileTipeSizeDate($sURL, $SizeTipeDate = "")
    WinHttp()
    $oHTTP.open("HEAD", $sURL, false)
	$oHTTP.SetRequestHeader("User-Agent", $sUserAgent)
    $oHTTP.Send()

    If $oHTTP.Status = 200 Then
		If $SizeTipeDate = 0 Then 
			Return $oHTTP.GetResponseHeader("Content-Type")
		EndIf
	
		If $SizeTipeDate = 1 Then 
			Return Round($oHTTP.GetResponseHeader("Content-Length")/1024/1024, 2)
		EndIf	
		
		If $SizeTipeDate = 2 Then 
			Return $oHTTP.GetResponseHeader("LAST-MODIFIED")
		EndIf
    Else
        Return -1
    EndIf
	$oErrorHandler = 0 ;изключваме обработката на грешки
EndFunc

#comments-start
	<?php
		$name1 = $_GET['name1'];
		echo $name1;
		$name2 = $_GET['name2'];
		echo $name2;
	?>
#comments-end

;MsgBox(64, "Info", _Get("http://www.google.bg/", "", 0))	;Съдържание на страница	
;MsgBox(64, "Info", _Get("http://HOST/get.php?name1=TeSt1&name2=TeSt2", "", 0))	;Get заявка с данни
;_Get("http://www.google.com/intl/en_ALL/images/logo.gif", @ScriptDir & "\google.gif", 1)	;Сваляне на файл
;MsgBox(64, "Info", _Get("http://www.google.com/intl/en_ALL/images/logo.gif", "", 2))	;Бинари код на файл
Func _Get($sURL, $sFilename, $DowRead = "")
    WinHttp()
    $oHTTP.Open("GET", $sURL, false)
    $oHTTP.SetRequestHeader("User-Agent", $sUserAgent)
    $oHTTP.Send()
	
	If $DowRead = 0 Then 
		Return $oHTTP.ResponseText
	EndIf
	
	If $DowRead = 1 Then 
		$File = FileOpen($sFilename, 2)
		FileWrite($File, $oHttp.ResponseBody)
		FileClose($File)
	EndIf
	
	If $DowRead = 2 Then 
		Return $oHTTP.ResponseBody
	EndIf
	$oErrorHandler = 0 ;изключваме обработката на грешки
EndFunc

Func WinHttp()
	Global $oErrorHandler = ObjEvent('AutoIt.Error', 'ErrorFunc') ;Създаваме обработчик на грешки (COM Error Handling http://www.autoitscript.com/autoit3/docs/intro/ComRef.htm)
	Global $oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1') ;Създава се COM-обект
	Dim $Time

	If @error Then
		;MsgBox(16, 'Грешка', 'Грешка при създаване на обекта "WinHttp.WinHttpRequest.5.1".')
		Sleep(100)
		$Time += 1
		If $Time = 5 Then
			Exit 1
		EndIf
		
		WinHttp()
	EndIf
EndFunc

Func ErrorFunc()
    ;MsgBox(16, 'Грешка', $oErrorHandler.description)
    ;Exit 2
EndFunc

Func PingG($Host)
	$var = Ping(StringRegExpReplace($Host,".+?//(.+?)/.+","$1"),1000)
	If $var Then
	Else
		Sleep(1000)
		PingG($Host)
	EndIf
EndFunc

Файл: HTTPx.zip

История версий:
1.0

Источник: secrets-bg.com
Автор(ы): secrets-bg.com
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
armenxxx1
OffTopic:
А на каком языке комментарии?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
DarWiM
полагаю на болгарском :smile:
 
Автор
A

armenxxx1

Продвинутый
Сообщения
155
Репутация
56
Да на Болгарский. Если не понимаете, могу помочь.
 

mef-t

Осваивающий
Сообщения
306
Репутация
30
Оно конечно боле-мене понимается, но буду благодарен, если скрипт будет продублирован с русскими комментариями.
 
Верх