Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Как запостить в определённую форму (IdHTTP)


Автор: Rohoss 3.7.2007, 03:03
Как запостить если на веб-страничке форма не одна?
Допустим надо закачать файл с помощью второй формы:
    Код


     
    <FORM action="rr.cgi" method="POST">
    <INPUT type="hidden" name="action" value="addse">
    <TABLE>
    <TR><TD valign="top">search string</TD><TD><TEXTAREA name="key" cols=30 rows=10></TEXTAREA><INPUT type="checkbox" name="rawkey" value=1> raw query</TD>
    </TR>
    <TR><TD valign="top">то</TD><TD><INPUT type="checkbox" name="y" value=1 checked=1></TD></TR>
    <TR>
    <TD colspan=2 style="text-align: center"><INPUT type="submit" value="Search and Add">&nbsp;(ок)</TD>
    </TR>
    </TABLE>
    </FORM>


     
    <FORM action="rr.cgi" method="POST" enctype="multipart/form-data">
    <P>File with URLs: <INPUT name="file" type="file" size="350"> <INPUT name="submit" type="submit" value="Upload"></P>
    </FORM>

     
    <FORM action="rr.cgi" method="POST">
    <INPUT type="hidden" name="action" value="addlist">
    <TABLE>
    <TR><TD valign="top">list:</TD>
    <TD><TEXTAREA name="list" cols=60 rows=10></textarea></TD>
    </TR>
    <TR>
    <TD colspan=2 style="text-align: center"><INPUT type="submit" value="Add"></TD>
    </TR>
    </TABLE>
    </FORM>
Пробовал 

Код

ms := TMemoryStream.Create;
k := TIdMultiPartFormDataStream.Create;
k.AddFormField('file','"C:\ppppppp3.txt"');
k.AddFormField('submit','submit');
IdHTTP1.Post('http://url.cgi',k,ms);
ms.Position := 0;
Memo1.Lines.LoadFromStream(ms);


И ещё кучу разных способов, smile  файл отправить так и не удалось.
Я так понял тут нужно обратится именно ко второй форме. Только как это сделать?

Заранее спасибо!

Автор: MetalFan 3.7.2007, 07:35
посмотреть, что посылает браузер, и слать то же самое...
см. HTTPTracer, HTTPDebugger
+
Цитата(Rohoss @  3.7.2007,  04:03 Найти цитируемый пост)
<INPUT name="submit" type="submit" value="Upload">


Цитата(Rohoss @  3.7.2007,  04:03 Найти цитируемый пост)
k.AddFormField('submit','submit');


Автор: Rohoss 3.7.2007, 21:08
Не совсем понял, о чём должны говорить цитаты? 

 smile  smile  smile  smile  smile  smile  smile 

Автор: MetalFan 3.7.2007, 21:40
Цитата(Rohoss @  3.7.2007,  22:08 Найти цитируемый пост)
Не совсем понял, о чём должны говорить цитаты? 

о внимании.
посмотри, что указано в форме в name и value, и что ты передаешь. а вообще лучше подсмотреть, что передает браузер

Автор: Rohoss 3.7.2007, 22:07
Вот что говорит снифер HTTPLook, как это отправить? 

Цитата

POST /xxx/xxx.cgi HTTP/1.10x0D 0x0A 
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-icq, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*0x0D 0x0A 
Referer: http://xxx/xxx/xxx.cgi0x0D 0x0A 
Accept-Language: uk0x0D 0x0A 
Content-Type: multipart/form-data; boundary=---------------------------7d723213602400x0D 0x0A 
Accept-Encoding: gzip, deflate0x0D 0x0A 
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; iOpus-I-M; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)0x0D 0x0A 
Host: globalsquid.com0x0D 0x0A 
Content-Length: 11600x0D 0x0A 
Connection: Keep-Alive0x0D 0x0A 
Cache-Control: no-cache0x0D 0x0A 
Cookie: xxx=e93E4o8I7PxDznH5MdVyGvYjLC0sSbKw0x0D 0x0A 
0x0D 0x0A 



Цитата

HTTP/1.1 200 OK0x0D 0x0A 
Date: Tue, 03 Jul 2007 19:25:36 GMT0x0D 0x0A 
Server: Apache/2.0.58 (FreeBSD)0x0D 0x0A 
Keep-Alive: timeout=15, max=1000x0D 0x0A 
Connection: Keep-Alive0x0D 0x0A 
Transfer-Encoding: chunked0x0D 0x0A 
Content-Type: text/html0x0D 0x0A 
0x0D 0x0A 
413
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<META http-equiv="content-type" content="text/html;charset=iso-8859-1">
<META name="language" content="en">
<META name="author" content="current">
<META http-equiv="pragma" content="no-cache">
<META http-equiv="Cache-Control" content="no-cache">
<META http-equiv="Expiration" content="0">

<TITLE>xxx</TITLE>
<STYLE type="text/css">
<!--
BODY { padding: 0; margin: 0; background-color: white; color: #131339; font-family: arial, sans, helvetica; font-size: 12px; }
TABLE { padding: 0; margin: 0; border-collapse: collapse; }
TD { padding: 3px; margin: 0; border: solid 1px #131339; text-align: left; }
TH { padding: 3px; margin: 0; border: solid 1px #131339; text-align: left; }
-->
</STYLE>
</HEAD>
<BODY>
<H2>xxx</H2>
<HR>

Uploaded file: C:\ppppppp4.txt (0.85 Kb)
<P><A href="xxx.cgi">xxx</A> <A href="xxxx.cgi">xxx</A></P>


</BODY>
</HTML>


0

Автор: Rohoss 6.7.2007, 03:01
Это при отправке браузером… 

Автор: aktuba 9.7.2007, 08:21
Что не понятного-то??? Первая твоя цитата - это то, что отправляет браузер. К сожалению, ты привел не все, поэтому код приводить не буду. Вторая цитата - ответ сервера на запрос.

P.S.: основные строки в первой цитате (для данного топа):

POST /xxx/xxx.cgi
Content-Type: multipart/form-data;
Referer: http://xxx/xxx/xxx.cgi
Host: globalsquid.com
Cookie: xxx=e93E4o8I7PxDznH5MdVyGvYjLC0sSbKw0x0D

Думаю, ничего сложного нету...

Автор: Rohoss 10.7.2007, 02:36
Остальноё, то, что я не привел код самого файла…

Дело точно не в Куке, потому что у меня Куки менеджер прикручен и работает… 

Автор: MetalFan 10.7.2007, 07:33
Цитата(Rohoss @  10.7.2007,  03:36 Найти цитируемый пост)
прикручен и работает

а ты уверен, что он работает, как надо? ))

Автор: aktuba 10.7.2007, 13:29
Что-то мне подсказывает, что ты не правильно сам запрос оформляешь. Например URL... Покажи полный код, тогда тебе скажут точнее...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)