Форум: "Сети";
Текущий архив: 2009.03.01;
Скачать: [xml.tar.bz2];
ВнизПодкажите как POST запрос в IdHTTP Найти похожие ветки
← →
DriveR_F (2006-12-06 21:19) [0]Имеется вот такой код в JavaScript:
<form method="post" action="http://smorye.apeha.ru/index.zhtml">
<input type="hidden" name="actUser-MLogin" value=1>
<input type="text" name="user{nick}">
<input type="text" name="user{password}">
</form>
Подскажите товарищи знатоки как мне сделать точно такой же через компонент IdHTTP
← →
Dmitrij_K (2006-12-06 21:37) [1]
sl := TStringList.Create;
sl.Add("actUser-MLogin=1");
sl.Add("user{nick}=???");
sl.Add("user{password}=***");
IdHTTP1.Post("http://smorye.apeha.ru/index.zhtml", sl);
← →
Орион © (2006-12-06 21:45) [2]> Имеется вот такой код в JavaScript:
серьезно? всю свою недолгуб жизнь думал, что это html.
← →
DriveR_F (2006-12-06 21:53) [3]
> sl := TStringList.Create;
> sl.Add("actUser-MLogin=1");
> sl.Add("user{nick}=???");
> sl.Add("user{password}=***");
> IdHTTP1.Post("http://smorye.apeha.ru/index.zhtml", sl);
Пробовал этот код, но как и раньше выдает ошибку HTTP/1.0 400 Bad Request
← →
DriveR_F (2006-12-06 22:10) [4]Все сделал, ошибка больше не вылазит, но и доступ я так и не получил...
← →
Dmitrij_K (2006-12-06 22:43) [5]
> но и доступ я так и не получил...
Надо куки запоминать
← →
DriveR_F (2006-12-06 23:22) [6]
> Надо куки запоминать
Приведите пожалуйсто пример работы с куками
← →
Dmitrij_K (2006-12-06 23:46) [7]Подключи CookeManager (вкладка Indy Misc) к IdHTTP
← →
DriveR_F (2006-12-07 00:24) [8]
> Подключи CookeManager (вкладка Indy Misc) к IdHTTP
Хм... Он у меня подключен... А работать то с ним как?
← →
Dmitrij_K (2006-12-07 08:29) [9]Никак, он сам работает если Active включить
← →
DriveR_F (2006-12-09 20:18) [10]Благодарю, вроде все получилось)
← →
DriveR_F (2006-12-09 20:18) [11]Благодарю, вроде все получилось)
← →
DriveR_F (2006-12-10 21:20) [12]Я использую Indy 10, там в CookieManager нет своиства Active, полагаю он включен по умолчанию... Но есть такая проблема, я захожу на одну страницу авторизованым, если перехожу на другую ссылку то авторизация теряется... Подскажите что сделать что бы авторизация не терялась?
← →
S(p)@wN © (2007-02-22 18:32) [13]
> DriveR_F (06.12.06 22:10) [4]
> Все сделал, ошибка больше не вылазит, но и доступ я так
> и не получил...
Доброго времени суток! Можно узнать как избавился от ошибки 400?
← →
S(p)@wN © (2007-02-22 18:34) [14]
> DriveR_F (06.12.06 22:10) [4]
> Все сделал, ошибка больше не вылазит, но и доступ я так
> и не получил...
Доброго времени суток! Можно узнать как избавился от ошибки 400?
← →
S(p)@wN © (2007-02-22 18:35) [15]Извиняюсь, за два сообщения, браузер затупил..
← →
Flores (2007-03-23 08:17) [16]Заставить менеджер куков работать:
©Не моё, найдено в инернете.procedure TForm1.IdCookieManager1NewCookie(ASender: TObject;
ACookie: TIdCookieRFC2109; var VAccept: Boolean);
begin
VAccept := true;
if ACookie.Path="" then ACookie.Path:="/";
end;
← →
SayatKZ © (2007-04-02 14:18) [17]Здарова мужики!!!
У меня такая задача:
надо сделать прогу которая работала бы как прокси,
использую TidHTTPServer и TidHTTP.
Когда browser обращается к TidHTTPServer, тот передает URL на TidHTTP,
TidHTTP полученную страницу обратно передает на TidHTTPServer и он его
возвращает browseru.
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
AResponseInfo.ContentText:=IdHTTP1.Get(ARequestInfo.RawHTTPCommand);
end;
но рисунки не идут. почему?
и как можно получить параметры метода POST у TidHTTPServer?
← →
malor (2007-05-30 13:26) [18]Я отправляю данные методом POST. Набираю в переменную Query типа TStrings различную информацию строками
Query.Append("<?xml version="1.0" encoding="windows-1251"?>");
Query.Append("<root>");
Query.Append("<auth uid="1" pwd="password" vp="2"/>");
....и т.д. ...........
затем :
ResultQuery := HTTP.Post(AdressScripta, Query);
Анализ ResultQuery показал, что отправленные мной данные не верны. Тогда я вывел переменную Query в поле Memo:
mmPolya.Lines:=Query;
Увидел вместо вышеприведенных строк такие:
<?xml version=%221%2E0%22+encoding%3D%22windows%2D1251%2 2%3F%3E
<root>
<auth uid=%221%22+pwd%3D%22password%22+vp%3D%222%22%2F%3 E
Почему он заменил симолы кавычек, уголков и прочего на коды?
Delphi7
← →
Anatoly Podgoretsky © (2007-05-30 14:00) [19]> malor (30.05.2007 13:26:18) [18]
Потому что RFC
← →
SlymRO © (2007-05-30 16:24) [20]А так?:
var Query:TStringStream;
AdressScripta,ResultQuery:string;
begin
Query:=TStringStream.Create("");
try
Query.WriteString("<?xml version="1.0" encoding="windows-1251"?>");
Query.WriteString("<root>");
Query.WriteString("<auth uid="1" pwd="password" vp="2"/>");
Query.WriteString("....и т.д. ...........");
ResultQuery :=HTTP.Post(AdressScripta,Query);
finally
Query.Free;
end;
end;
← →
malor (2007-05-30 16:27) [21]RFC 2068 3.6 Кодирование передачи (Transfer Codings).
http://www.lib.ru/WEBMASTER/rfc2068/section-3.html#p2-2 .
"Значения кодирования передачи используются для указания преобразования кодирования, которое было или должно быть применено к телу объекта (entity-body) в целях гарантирования "безопасной передачи" по сети. Оно отличается от кодирования содержимого тем, что кодирование передачи - это свойство сообщения, а не первоначального объекта."
Вы этот кусок имели ввиду?
Если помещаю строку mmPolya.Lines:=Query; до строки
ResultQuery := HTTP.Post(AdressScripta, Query);
то в поле Memo вижу строки :
<?xml version="1.0" encoding="windows-1251"?>
<root>
<auth uid="1" pwd="password" vp="2"/>
...........и т.д. ...........................
т.е. все нормально. А если вывод в Memo делать после отправки данных методом POST, то как раз и увидим:
<?xml version=%221%2E0%22+encoding%3D%22windows%2D1251%2 2%3F%3E
<root>
<auth uid=%221%22+pwd%3D%22password%22+vp%3D%222%22%2F%3 E
Это означает, что метод POST изменяет содержимое Query?
← →
SlymRO © (2007-05-30 16:58) [22]malor (30.05.07 16:27) [21]
Это означает, что метод POST изменяет содержимое Query
Это означает, что метод POST с параметрами(string,TStrings) использован не по назначению... а назначение такое:
Передать серверу параметры и их значения из листа вида
параметр1=значение1
параметр2=значение2
← →
malor (2007-05-31 15:30) [23]Вспомнил, что в проге есть место тоже где отправляется инфа методом POST, и в том случае все прошло гладко. Кусок такой:
Query.Append("XML_Query=<?xml version="1.0" encoding="windows-1251"?><root><auth uid="1" pwd="password" vp="2"/><cmd id="1"/></root>");
Result:=HTTP.Post(AdressScripta,Query);
Я решил, чтоб в Query было не несколько строк, а одна; для этого стал собирать все в String"овую переменную stpost:
stpost:="";
stpost:=stpost+"XML_Query=<?xml version="1.0" encoding="windows-1251"?><root><auth uid="1" pwd="password" vp="2"/><cmd id="1">";
........и т.д..................
Query.Append(stpost);
ResultQuery := HTTP.Post(AdressScripta, Query);
mmPolya.Lines.Clear;
mmPolya.Lines:=Query;
У чела на сервере данные, переданные POST"ом нормально пропарсились(libxml2).
Почему только все-таки, то что вывелось в Memo поле, даже сейчас имеет вид :
XML_Query=%3C%3Fxml+version%3D%221%2E0%22+encoding%3D%22windows%2D1251%22%3F%3E%3Croot%3E%3Cauth
+uid%3D%221%22+pwd%3D%22password%22+vp%3D%222%22%2F%3E%3Ccmd+id%3D%22333%22%3E%3C
т.е. с процентными кодами символов?
← →
realt © (2007-08-10 16:01) [24]Народ, вот такой вопрос: Доустим мне надо передать вот такой ПОСТ запрос:
http://somesite.com/script.php?c=Привет. Script.php отправит мне слово привёт на мыло. Но гогда я послаю запрос с помощью idhttp то приходит не в той кодировке. КАк изменить?
← →
SpellCaster (2007-08-15 12:58) [25]Кодируй символы в стиле %3D%22, в скрипте юзай url_decode
← →
Venkin (2007-11-09 15:23) [26]Здравствуйте!
пишу программу, чтобы заходить на сайт, используя логин и пасс.
вариант1.
procedure TForm1.Button1Click(Sender: TObject);
var list: TStringList;
response: TStringStream;
begin
response:=TstringStream.Create("");
list := TStringList.Create;
list.Add("req_username=rapget");
list.Add("req_password=123456");
try
IdHTTP1.Post("http://usd.mybb.ru/login.php",list,Response);
memo1.lines.text := response.DataString;
finally
list.Free;
response.free;
idHTTP1.Disconnect;
end;
end;
к idhttp1 привязан куки-манагер (в инспекторе объектов выбрал)
в ответ получаю html в котором страница логина с пустыми полями, т.е. результат нулевой.
вариант 2:
function UrlEncode(const S:string;NeedUTF8:boolean=false):string;
var I:integer; W:UTF8String;
begin
Result:="";
if NeedUTF8 then W:=Utf8Encode(S) else W:=S;
For I:=1 to Length(W) do case W[I] of
"%"," ","&","=","@",".",#13,#10,"+",#128..#255:Result:=Result+"%"+inttohex(ord(W[I]),2);
else Result:=Result+W[I];
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var Source:TStringStream;
Fin:TFileStream;
begin
Source := TStringStream.Create(Format("req_username=%s&req_password=%s",[URLEncode("rapget"),
URLEncode("123456")]));
Fin:= TFileStream.Create("c:\rapget.html", fmOpenWrite);
Http.Request.ContentType:="application/x-www-form-urlencoded";
try
Http.Post("http://usd.mybb.ru/login.php",Source,Fin);
finally
source.Free;
fin.Free;
end;
end;
к компоненту http привязан куки-манагер, koторый принимает куки.
ответ - html как и в первом варианте, т.е. - не заходит.
с помощью TCPTrace посмотрел запрос-ответ через браузер, вот они:
POST http://usd.mybb.ru/login.php?action=in HTTP/1.1
Host: usd.mybb.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en,en-us;q=0.8,de-de;q=0.5,de;q=0.3
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Referer: http://usd.mybb.ru/login.php
Cookie: mybb_ru=MXw2NmNkYjI3MjdiZmEzZjUyODIzYTQyNGFhMjViNDJiYWRjYWU2YTM3
Content-Type: application/x-www-form-urlencoded
Content-Length: 96
form_sent=1&redirect_url=index.php&req_username=rapget&req_password=123456&login =%C2%EE%E9%F2%E8GET http://usd.mybb.ru/index.php HTTP/1.1
Host: usd.mybb.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en,en-us;q=0.8,de-de;q=0.5,de;q=0.3
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Cookie: mybb_ru=Nnw4YzY5M2M4NmRiNTMwM2JkNmRkYmMyZGZiMzE2MGYxYTlmM2Q2NDVm
If-Modified-Since: Thu, 08 Nov 2007 09:20:12 GMT
пост получился большим(постарался дать побольше инфы). как решить эту проблему, подскажите пожалуста.
← →
skdon (2007-11-10 21:11) [27]
> в ответ получаю html в котором страница логина с пустыми
> полями, т.е. результат нулевой.
begin
IdCookieManager1:= TIdCookieManager.Create(nil);
idHTTP1 := TidHTTP.Create(nil);
IdHTTP1.AllowCookies:=true;
IdHTTP1.CookieManager:= IdCookieManager1;
IdHTTP1.HandleRedirects:= true;
Send:= TStringList.Create;
Otvet:= TStringList.Create;
otvet.Text:=Idhttp1.Get("http://xxx.ru/index.php");
Send.Add("login_name=login");
Send.Add("login_password=pass");
Send.Add("login=submit");
Send.Add("image.x=20");
Send.Add("image.y=10");
Otvet.Text:=IdHTTP1.Post("http://xxx.ru/index.php", Send);
Otvet.Clear;
end;
Так работает :)
← →
Venkin (2007-11-10 22:31) [28]skdon
>
> Так работает :)
увы нет, возвращает индексную страницу, а на форум не входит.. :( :( :(
[B]Send.Add("image.x=20");
Send.Add("image.y=10");[/B]
а это что означает?
← →
имя (2007-12-29 05:12) [29]Удалено модератором
← →
имя (2007-12-31 22:39) [30]Удалено модератором
← →
имя (2007-12-31 22:39) [31]Удалено модератором
← →
имя (2008-01-04 03:13) [32]Удалено модератором
← →
имя (2008-01-05 15:20) [33]Удалено модератором
← →
имя (2008-01-05 18:39) [34]Удалено модератором
← →
имя (2008-01-05 18:40) [35]Удалено модератором
← →
имя (2008-01-05 18:41) [36]Удалено модератором
← →
имя (2008-01-05 18:41) [37]Удалено модератором
← →
имя (2008-01-05 18:42) [38]Удалено модератором
← →
имя (2008-01-05 18:43) [39]Удалено модератором
← →
имя (2008-01-05 18:44) [40]Удалено модератором
Страницы: 1 2 3 вся ветка
Форум: "Сети";
Текущий архив: 2009.03.01;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.006 c