Доброй ночи!
Уважаемые форумчане помогите с задачей!
После отправки ниже показаного пост запроса, сервер отвечает файлом. Но я видимо что-то неправильно делаю и не могу принять и сохранить этот файл...=(
Прошу Вашей помощи! Спасибо!
Уважаемые форумчане помогите с задачей!
После отправки ниже показаного пост запроса, сервер отвечает файлом. Но я видимо что-то неправильно делаю и не могу принять и сохранить этот файл...=(
Прошу Вашей помощи! Спасибо!
Код:
$sParametersDownload='OriginURL=%2Fshop%2Forder.php&OrderID='&$sOrderID&'&Download=Download';
$Download = 'POST /shop/redirect.php HTTP/1.1' & @CRLF
$Download &= 'Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*'& @CRLF ;Заголовки
$Download &= 'Referer: http://server.com/shop/order.php?OrderID='&$sOrderID&'' & @CRLF ;Заголовки
$Download &= 'Accept-Language: ru-RU' & @CRLF
$Download &= 'User-Agent: Demianovych Bot' & @CRLF
$Download &= 'Content-Type: application/x-www-form-urlencoded' & @CRLF
$Download &= 'Accept-Encoding: gzip, deflate' & @CRLF
$Download &= 'Host: server.com' & @CRLF
$Download &= 'Content-Length: ' & StringLen($sParametersDownload) & @CRLF ;Указываем заголовок Content-Length (необходимо для POST-запроса)
$Download &= 'Connection: Keep-Alive' & @CRLF
$Download &= 'Cache-Control: no-cache' & @CRLF
$Download &= 'Cookie: CoordinateSystem=geographical; DeliveryType=download; EMailType=single; NotifyMail=0; RINEXType=1; Lang=ENG; '&$cookie_mid&'' & @CRLF
$Download &= @CRLF ;Заголовки от параметров отделяет пустая строка
$Download &= $sParametersDownload ;Параметры в запросе;;
If TCPStartup() = 0 Then ;запускаем TCP/UDP-службы
MsgBox(16, 'Ошибка', 'Не удалось запустить TCP/UDP-службы.')
Exit 1
EndIf
$sIP = TCPNameToIP($sDomain) ;получаем ip-адрес
If @error Then
MsgBox(16, 'Ошибка', 'Не удалось получить ip-адрес сервера.')
Exit 2
EndIf
$iSocket = TCPConnect($sIP, $iPort) ;соединяемся с сервером
If @error Then
MsgBox(16, 'Ошибка', 'Не удалось соедениться с сервером.')
Exit 3
EndIf
TCPSend($iSocket, $Download) ;отправляем сообщение
If @error Then
MsgBox(16, 'Ошибка', 'Не удалось отправить запрос.')
Exit 4
EndIf
$sFile = ''
$iTimer = TimerInit() ;запускаем таймер
Do
$sBuffer = TCPRecv($iSocket, 1024)
$iError = @error
If Not $sBuffer = '' Then
$sFile &= $sBuffer
$iTimer = TimerInit() ;обнуляем таймер
EndIf
Until $iError <> 0 Or TimerDiff($iTimer) > 5000 ;если при получении сообщения произошла ошибка (данные получены, соединение закрыто) или в течении 5 секунд ничего не было получено, выход из цикла
TCPCloseSocket($iSocket)
TCPShutdown()
FileWrite("C:/1.zip",$aFile[1])