Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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
2-1232095406
vegarulez
2009-01-16 11:43
2009.03.01
работа в горячей клавишей...


15-1231199273
programmer90
2009-01-06 02:47
2009.03.01
Borland C


2-1232440986
Анна
2009-01-20 11:43
2009.03.01
Не сохраняется кнопка с макросом в Excel при переносе на др. ПК


2-1231401940
Patrick1968
2009-01-08 11:05
2009.03.01
Работа с графиками


15-1230733143
Slider007
2008-12-31 17:19
2009.03.01
С днем рождения ! 31 декабря 2008 среда





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский