Форум: "Сети";
Текущий архив: 2008.07.27;
Скачать: [xml.tar.bz2];
ВнизPOST запрос с помощью ShellExecute... Найти похожие ветки
← →
botaniQ (2007-09-26 11:21) [0]Собственно сабж...
Как бы мне отправить запрос на сервер и перейти на полученную страницу (не получить ответ от сервера), а просто перейти с помощью стандартного браузера???
Кто подскажет???
← →
DVM © (2007-09-26 11:23) [1]запустить iexplore.exe c url в качестве параметра?
← →
DVM © (2007-09-26 11:23) [2]но именно POST запрос сделать не получится, только GET
← →
botaniQ (2007-09-26 11:24) [3]Да запустить не сложно например так
ShellExecute (0, "open", PChar("http://www.site.ru/auth.php"), nil, nil, SW_SHOW);
А вот как при этом передать POST-запрос например с логином и паролем??
← →
botaniQ (2007-09-26 11:25) [4]
>
> DVM © (26.09.07 11:23) [2]
> но именно POST запрос сделать не получится, только GET
Эх...жалко....Но в том же Mail.ru Agent"е это как то срабатывает
← →
DiamondShark © (2007-09-26 11:52) [5]
> Но в том же Mail.ru Agent"е это как то срабатывает
Какое "это"? POST запрос с помощью ShellExecute? Это нигде не срабатывает.
У тебя задача верхнего уровня какая?
← →
botaniQ (2007-09-26 11:57) [6]Задача такова - в программе происходит авторизация с помощью IdHTTP - далее появляется мое окошко скажем с кнопочкой "мои сообщения" - после нажатия этой кнопочки мне надо перейти на web-страницу (с сообщениями для определенного пользователя)...А что бы перейти на страницу мне надо сначала перейти на скрипт авторизации, куда передать ПОСТом логин, пароль и страницу навигации (куда перейти после авторизации)....
← →
botaniQ (2007-09-26 12:00) [7]Я думал можно как то типо так:
post:="POST http://localhost/ HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Accept-Language: ru
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0;
Windows NT 5.0; .NET CLR 1.0.3705)
Host: localhost
Proxy-Connection: Keep-Alive
param1=1¶m2=2";
ShellExecute (0, "open", PChar("http://www.site.ru/auth.php"+post), nil, nil, SW_SHOW);
Или типа того - но вроде как так не полуцца...
← →
DVM © (2007-09-26 13:59) [8]
> А что бы перейти на страницу мне надо сначала перейти на
> скрипт авторизации, куда передать ПОСТом логин, пароль и
> страницу навигации (куда перейти после авторизации)....
а почему бы это все через TIdHTTP не сделать. Там тебе и пост и жет и все остальное будет.
← →
botaniQ (2007-09-27 12:26) [9]
> DVM © (26.09.07 13:59) [8]
>
> > А что бы перейти на страницу мне надо сначала перейти
> на
> > скрипт авторизации, куда передать ПОСТом логин, пароль
> и
> > страницу навигации (куда перейти после авторизации)...
> .
>
> а почему бы это все через TIdHTTP не сделать. Там тебе
> и пост и жет и все остальное будет.
Да будет то будет (я так сначала и делал) но вот IdHTTP возвращает мне код страницы - а мне нужно перейти непосредственно на аккаунт-страницу - как я понял IdHTTP этого не может обеспечить...
← →
DVM © (2007-09-27 12:32) [10]
> а мне нужно перейти непосредственно на аккаунт-страницу
> - как я понял IdHTTP этого не может обеспечить...
Что значит перейти? Переход каким макаром осуществляется? Редиректом что ли? Так TIdHTTP вроде как редирект понимает.
← →
botaniQ (2007-09-27 13:22) [11]IdHTTP понимает редиректы, но дело не в них...
предположим вот кусочек кода:
---------------------------------------
POST.Valuer["login"]:="login";
POST.Valuer["password"]:="password";
S:=IdHTTP.POST ("www.aaaa.ru/auth.php", POST);
---------------------------------------
в auth.php происходит редирект на user.php...
А что дальше то мне делать? Как попасть на эту аккаунт-страницу типа www.aaaa.ru/user.php, Как открыть ее в IE??
← →
botaniQ (2007-09-27 13:27) [12]Вот в auth.php создается сессия которая и обеспечивает переход на аккаунт страницу данного пользователя (user.php)...
> DVM © (27.09.07 12:32) [10]
> ...
> Что значит перейти?
> ...
А перейти я имел ввиду - открыть в стандартном браузере!
← →
DiamondShark © (2007-09-27 13:32) [13]
> А перейти я имел ввиду - открыть в стандартном браузере!
Разбирай ответ на POST, устанавливай куки функцией InternetSetCookie, потом открывай в стандартном браузере тот URL, на который тебя послали в ответ на POST.
Это если стандартный браузер -- IE. Для другого придётся искать, как ему подсунуть нужные куки.
← →
Anatoly Podgoretsky © (2007-09-27 13:43) [14]> DiamondShark (27.09.2007 13:32:13) [13]
В ответ на POST посылается страница, так же как и на GET - отличаются они методом передачи параметров на сервер.
Сомневаюсь что ее удастся подсунуть браузеру по умолчанию
← →
DiamondShark © (2007-09-27 14:09) [15]
> Anatoly Podgoretsky © (27.09.07 13:43) [14]
Конечно, всё от конкретного сайта зависит.
Автору бы следовало не полениться, а получить полный лог HTTP запросов и ответов, которые проходят при достижении нужной цели в браузере.
А потом уже можно было бы решать, какие из шагов можно сымитировать, и что где браузеру подсунуть.
← →
umbra © (2007-09-27 16:30) [16]
> А перейти я имел ввиду - открыть в стандартном браузере!
получайте страницу в TIdHTTP и передавайте веббраузеру (если это Интернет эксплорер)
procedure TForm1.Button1Click(Sender: TObject);
var
mypage: string;
stream: IStream;
mycount: Integer;
wb: IDispatch;
persStream: IPersistStreamInit;
newpos: int64;
begin
WebBrowser1.Navigate("about:blank");
mypage := IdHTTP1.Get("http://www.delphimaster.ru");
if Succeeded(CreateStreamOnHGlobal(0, true, stream)) then
if Succeeded(stream.Write(PChar(mypage), Length(mypage) + 1, @mycount)) then
begin
stream.Seek(0, STREAM_SEEK_SET, newpos);
wb := WebBrowser1.Document;
if Succeeded(wb.QueryInterface(IID_IPersistStreamInit, persStream)) then
begin
if Succeeded(persStream.InitNew) then
persStream.Load(stream);
persStream._Release;
end;
end;
end;
← →
botaniQ (2007-09-28 13:07) [17]Всем спасибо за обсуждение....пришлось действовать так:
Я на промежуточный скрипт отправляю GET типа http://www.site.ru/auth.php?login=...&password=... и там уже работает так:
if (!empty($_GET[login]))
{
$login=$_GET[login];
$password=$_GET[password];
$url=$_GET[url];
?>
<form name=form action="http://www.site.ru/auth.php" method=post>
<input type="hidden" name="login" value="<? echo $login; ?>">
<input type="hidden" name="password" value="<? echo $password;?>">
<input type="hidden" name="url" value="<? echo $url; ?>">
<input type="hidden" name="ok" value="OK">
</form>
<script>document.forms["form"].submit();</script>
<?
}
:)
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2008.07.27;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.008 c