-
Имеется вот такой код в 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
-
sl := TStringList.Create;
sl.Add('actUser-MLogin=1');
sl.Add('user=???');
sl.Add('user=***');
IdHTTP1.Post('http:
-
> Имеется вот такой код в JavaScript:
серьезно? всю свою недолгуб жизнь думал, что это html.
-
> 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
-
Все сделал, ошибка больше не вылазит, но и доступ я так и не получил...
-
> но и доступ я так и не получил...
Надо куки запоминать
-
> Надо куки запоминать
Приведите пожалуйсто пример работы с куками
-
Подключи CookeManager (вкладка Indy Misc) к IdHTTP
-
> Подключи CookeManager (вкладка Indy Misc) к IdHTTP
Хм... Он у меня подключен... А работать то с ним как?
-
Никак, он сам работает если Active включить
-
Благодарю, вроде все получилось)
-
Благодарю, вроде все получилось)
-
Я использую Indy 10, там в CookieManager нет своиства Active, полагаю он включен по умолчанию... Но есть такая проблема, я захожу на одну страницу авторизованым, если перехожу на другую ссылку то авторизация теряется... Подскажите что сделать что бы авторизация не терялась?
-
> DriveR_F (06.12.06 22:10) [4] > Все сделал, ошибка больше не вылазит, но и доступ я так > и не получил...
Доброго времени суток! Можно узнать как избавился от ошибки 400?
-
> DriveR_F (06.12.06 22:10) [4] > Все сделал, ошибка больше не вылазит, но и доступ я так > и не получил...
Доброго времени суток! Можно узнать как избавился от ошибки 400?
-
Извиняюсь, за два сообщения, браузер затупил..
-
Заставить менеджер куков работать: ©Не моё, найдено в инернете. procedure TForm1.IdCookieManager1NewCookie(ASender: TObject;
ACookie: TIdCookieRFC2109; var VAccept: Boolean);
begin
VAccept := true;
if ACookie.Path='' then ACookie.Path:='/';
end;
-
Здарова мужики!!! У меня такая задача: надо сделать прогу которая работала бы как прокси, использую 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?
-
Я отправляю данные методом 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
-
> malor (30.05.2007 13:26:18) [18]
Потому что RFC
-
А так?: 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;
-
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?
-
malor (30.05.07 16:27) [21] Это означает, что метод POST изменяет содержимое Query Это означает, что метод POST с параметрами(string,TStrings) использован не по назначению... а назначение такое: Передать серверу параметры и их значения из листа вида параметр1=значение1 параметр2=значение2
-
Вспомнил, что в проге есть место тоже где отправляется инфа методом 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 т.е. с процентными кодами символов?
-
Народ, вот такой вопрос: Доустим мне надо передать вот такой ПОСТ запрос: http://somesite.com/script.php?c=Привет. Script.php отправит мне слово привёт на мыло. Но гогда я послаю запрос с помощью idhttp то приходит не в той кодировке. КАк изменить?
-
Кодируй символы в стиле %3D%22, в скрипте юзай url_decode
-
Здравствуйте! пишу программу, чтобы заходить на сайт, используя логин и пасс. вариант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: 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: 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: 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 пост получился большим(постарался дать побольше инфы). как решить эту проблему, подскажите пожалуста.
-
> в ответ получаю 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; Так работает :)
-
skdon
> > Так работает :)
увы нет, возвращает индексную страницу, а на форум не входит.. :( :( :(
[B]Send.Add('image.x=20'); Send.Add('image.y=10');[/B]
а это что означает?
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
|