Что нового

Отправка POST-запроса с чтением авторизованной страници

winstan

Эксплотатор)
Сообщения
406
Репутация
79
Пытаюсь послать запрос с целью вернуть от сервера авторизованную страницу
Возникли такие вот проблемы:
1.Возрощается не автоизованная страница, даже не страница каторая должна быть в случаи не вверных даных , просто главная страница(это оснавная проблема)
2.При выведении полученой страници на GUI или MsgBox вместо кирилици пишется не очень понятные симолы.

Вот форма которую я брал за основу
Код:
		<form action="http://www.lcgame.ru/forums/auth/login/" method="post">
			<td><input name="login"/></td>
			<td><input name="password"/></td>
			<td><input type="submit" class="button" value="Вход"/></td>
		</form>

Вот код который у меня получился после в общемто не очень удачных попыток поиска по форуму...
Код:
#include <GUIConstants.au3>

$send='login=логин&password=пороль'
$Data=post($send)

GUICreate("Data")
GUICtrlCreateEdit($Data,1,1,400,400)
GUISetState ()
While 1
    $msg = GUIGetMsg()
    
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Wend


Func post($send)
	Local $oRequest,$oErrorHandler
$oRequest = ObjCreate('WinHttp.WinHttpRequest.5.1') ;Создаём COM-объект

If @error Then
    MsgBox(16, 'Ошибка', 'Ошибка при создании объекта "WinHttp.WinHttpRequest.5.1".')
    Exit 1
EndIf

$oErrorHandler = ObjEvent('AutoIt.Error', 'ErrorFunc') ;Создаём обработчик ошибок (COM Error Handling http://www.autoitscript.com/autoit3/docs/intro/ComRef.htm)



$oRequest.Open('POST', 'http://www.lcgame.ru/forums/auth/login/', 0) ;Создаём соеденение, указываем адрес страницы
$oRequest.SetRequestHeader('User-Agent', 'au3browser') ;Указываем заголовок User-Agent
$oRequest.SetRequestHeader('Content-Type', 'application/x-www-form-urlencoded') ;Указываем заголовок Content-Type (необходимо для POST-запроса (Content-Length указывается автоматически))
$oRequest.Send($send) ;отправляем запрос
$sData = $oRequest.ResponseText

$oErrorHandler = 0 ;выключаем обработчик ошибок
Return $sData
EndFunc 

Func ErrorFunc()
    MsgBox(16, 'Ошибка', $oErrorHandler.description)
    Exit 2
EndFunc
 

XpycT

Скриптер
Сообщения
380
Репутация
133
winstan
Попробуй заменить строчку
Код:
$oRequest.Open('POST', 'http://www.lcgame.ru/forums/auth/login/', 0) ;Создаём соеденение, указываем адрес страницы

на
Код:
$oRequest.Open('POST', 'http://www.lcgame.ru/forums/', 0) ;Создаём соеденение, указываем адрес страницы
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
winstan,
Может, надо добавить?
Код:
;...
$oRequest.SetCredentials('name', 'password', $HTTPREQUEST_SETCREDENTIALS_FOR_SERVER)
;...
Посмотрите примеры здесь.
 
Автор
winstan

winstan

Эксплотатор)
Сообщения
406
Репутация
79
madmasles
но я посылаю POST , а не HTTP-аутентификациа, или это одно и тоже?
XpycT
Тоже не помогло

вот данные для входа
логин delakey
пасс 123456

А вообще как можно получить сначала адрес на который переадресовывает сервер когда получает данные?
А уже потом решать нужноли заружать данную страницу или нет.
И если нет то не продолжать.


Добавлено:
Сообщение автоматически объединено:

XpycT
Помогло... оказалась что я не верно соствил изначальную форму
и нада было использовать
http://www.lcgame.ru/auth/login/
А вот в браузере форма прекрасно работала.

Теперь 2 проблемы такие.
1.Как сначала получить адрес страници на которую нас перебрасывает
(два варианта страниц сюда если данные верны http://www.lcgame.ru/
Сюда если ошибка http://www.lcgame.ru/auth/sendpass/?err=1)

2.Кирилица не распознаётся.
 

XpycT

Скриптер
Сообщения
380
Репутация
133
winstan
Код:
#include <GUIConstants.au3>

$send='login=логин&password=пороль'
$Data=post($send)

GUICreate("Data")
GUICtrlCreateEdit($Data,1,1,400,400)
GUISetState ()
While 1
    $msg = GUIGetMsg()

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Wend


Func post($send)
    Local $oRequest,$oErrorHandler
$oRequest = ObjCreate('WinHttp.WinHttpRequest.5.1') ;Создаём COM-объект

If @error Then
    MsgBox(16, 'Ошибка', 'Ошибка при создании объекта "WinHttp.WinHttpRequest.5.1".')
    Exit 1
EndIf

$oErrorHandler = ObjEvent('AutoIt.Error', 'ErrorFunc') ;Создаём обработчик ошибок (COM Error Handling http://www.autoitscript.com/autoit3/docs/intro/ComRef.htm)


$oRequest.Option(6) = False ; WinHttpRequestOption_EnableRedirects
$oRequest.Open('POST', 'http://www.lcgame.ru/auth/login/') ;Создаём соеденение, указываем адрес страницы
$oRequest.SetRequestHeader('User-Agent', 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.9.168 Version/11.51') ;Указываем заголовок User-Agent
$oRequest.SetRequestHeader('Accept-Language', 'ru-RU,ru') ;Указываем заголовок User-Agent
$oRequest.SetRequestHeader('Content-Type', 'application/x-www-form-urlencoded') ;Указываем заголовок Content-Type (необходимо для POST-запроса (Content-Length указывается автоматически))
$oRequest.Send($send) ;отправляем запрос
$sData = $oRequest.ResponseText

$sLocation = $oRequest.GetResponseHeader("Location"); : http://www.lcgame.ru/auth/sendpass/?err=1
MsgBox(0, "", $sLocation)


$oErrorHandler = 0 ;выключаем обработчик ошибок
Return $sData
EndFunc

Func ErrorFunc()
    MsgBox(16, 'Ошибка', $oErrorHandler.description)
    Exit 2
EndFunc
 
Верх