★★★ 高分求助!我的idHttp为什么不能提交数据到表单? 大哥大姐看看吧
我的idHttp为什么不能提交数据到表单?
一、待填写表单说明:
当前URL名称: www.139.com/thread.php?fid-22.html
Form代码:
<form name="FORM" method="post" action="post.php?" enctype = "multipart/form-data" onsubmit="return checkpost(document.FORM);" id="anchor">
<input type="text" class="input" id="atc_title" name="atc_title" value="" size="55" />
<input type="hidden" name="atc_autourl" value="1" /> </div>
<textarea onkeydown="quickpost(event)" name="atc_content" id="atc_content" rows="8" style="width:96%"> </textarea>
</form>
二、我的思路及代码
1、用IdHttp先登录,这一步成功了
测试标准:我访问一个需登录才能访问的网页,能正常访问
2、我的代码(局部)
var
ResponseStream: TMemoryStream;
MultiPartFormDataStream: TMsMultiPartFormDataStream;
begin
MultiPartFormDataStream := TMsMultiPartFormDataStream.Create;
ResponseStream := TMemoryStream.Create;
// FHttp.Request.ContentType :='multipart/form-data'; // MultiPartFormDataStream.RequestContentType;
// FHttp.Request.ContentType := 'multipart/form-data;boundary=---------------------------7d928035300b0';
FHTTP.HTTPOptions:=[hoForceEncodeParams];
FHTTP.ProtocolVersion := pv1_1;
FHTTP.Request.Accept:='*/*';
FHTTP.Request.Referer:='http://www.139.com/post.php?fid=24';
FHTTP.Request.AcceptLanguage := 'zh-cn';
FHTTP.Request.ContentType := 'multipart/form-data; boundary=---------------------------7d928035300b0';
FHTTP.Request.AcceptEncoding := 'gzip, deflate';
FHTTP.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)';
FHTTP.Request.Host := 'www.139.com';
FHTTP.Request.ContentLength :=3614 ; //MultiPartFormDataStream.Size;// length(Edit1.Text);
FHTTP.Request.Connection := 'Keep-Alive';
FHTTP.Request.CacheControl := 'no-cache';
MultiPartFormDataStream.AddFormField('magicname', '');
MultiPartFormDataStream.AddFormField('magicid', '');
MultiPartFormDataStream.AddFormField('verify', '6b790d3c');
MultiPartFormDataStream.AddFormField('p_type', '16');
MultiPartFormDataStream.AddFormField('atc_title', '111002');
MultiPartFormDataStream.AddFormField('atc_iconid', '0');
MultiPartFormDataStream.AddFormField('ctype[best]', 'money');
MultiPartFormDataStream.AddFormField('bonus[best]', '');
//////////////////
MultiPartFormDataStream.AddFormField('ctype[active]', 'money');
MultiPartFormDataStream.AddFormField('bonus[active]', '');
MultiPartFormDataStream.AddFormField('atc_content', 'I am the content');
MultiPartFormDataStream.AddFormField('topped', '0');
MultiPartFormDataStream.AddFormField('atc_autourl', '1');
MultiPartFormDataStream.AddFormField('atc_usesign', '1');
MultiPartFormDataStream.AddFormField('atc_convert', '1');
MultiPartFormDataStream.AddFile('attachment_1' , ';c:\abc.txt','text/plain') ; //添加文件
//MultiPartFormDataStream.AddFile('attachment_1' , 'c:\abc.txt','application/octet-stream') ; //这样试过也不行
MultiPartFormDataStream.AddFormField('atc_desc1', '');
MultiPartFormDataStream.AddFormField('att_special1', '0');
MultiPartFormDataStream.AddFormField('att_ctype1', 'money');
MultiPartFormDataStream.AddFormField('atc_needrvrc1', '0');
// MultiPartFormDataStream.AddFormField('attachment_2', '; filename=', '', 'Content-Type: application/octet-stream');
// 文件名为空时,会提示无法找到此文件
// MultiPartFormDataStream.AddFile('attachment_2' , 'c:\123.txt' ,'text/plain') ;
// MultiPartFormDataStream.AddFormField('attachment_2','c:\abc.txt');
//MultiPartFormDataStream.AddFile('attachment_2' , 'c:\123.txt' ,'application/octet-stream') ;
MultiPartFormDataStream.AddFormField('atc_desc2', '');
MultiPartFormDataStream.AddFormField('att_special2', '0');
MultiPartFormDataStream.AddFormField('att_ctype2', 'money');
MultiPartFormDataStream.AddFormField('atc_needrvrc2', '0');
MultiPartFormDataStream.AddFormField('atc_tags', '');
MultiPartFormDataStream.AddFormField('step', '2');
MultiPartFormDataStream.AddFormField('pid', '');
MultiPartFormDataStream.AddFormField('action', 'new');
MultiPartFormDataStream.AddFormField('fid', '24');
MultiPartFormDataStream.AddFormField('tid', '0');
MultiPartFormDataStream.AddFormField('article', '0');
MultiPartFormDataStream.AddFormField('special', '3');
MultiPartFormDataStream.AddFormField('_hexie', 'ca14e4d8');
MultiPartFormDataStream.PrepareStreamForDispatch;
// FHTTP.Request.ContentLength := 3614; MultiPartFormDataStream.Size;// length(Edit1.Text);
MultiPartFormDataStream.Position := 0;
//调用idhttp的post方法,第一个参数是用于处理上载form的asp/php等等脚本,第三个是接收脚本执行完成后的返回内容)
FHttp.Post('http://www.139.com/post.php', MultiPartFormDataStream, ResponseStream); //非法操作
//因为不知道到底提交给哪个文件,故试了多个文件,但最终一查发表过的帖子,都没有成功。
FHttp.Post('http://www.139.com/post.php?fid=24', MultiPartFormDataStream, ResponseStream);
ResponseStream.SaveToFile('c:\stream3.txt');
FHttp.Post('http://www.139.com/thread.php?fid=24', MultiPartFormDataStream, ResponseStream);
ResponseStream.SaveToFile('c:\stream4.txt');
FHttp.Post('http://www.139.com/thread.php?', MultiPartFormDataStream, ResponseStream);
ResponseStream.SaveToFile('c:\stream5.txt');
FHttp.Post('http://www.139.com/thread.php', MultiPartFormDataStream, ResponseStream);
ResponseStream.SaveToFile('c:\stream6.txt');
MultiPartFormDataStream.SaveToFile('c:\all.txt');
MultiPartFormDataStream.SaveToFile('c:\1.txt');
MultiPartFormDataStream.Free;
ResponseStream.Free;