学习用IdHTTP1在论坛发帖,但是发了没反映,请教,有代码(199)

  • 主题发起人 主题发起人 冬月
  • 开始时间 开始时间

冬月

Unregistered / Unconfirmed
GUEST, unregistred user!
纯粹是学习用,不是用于灌水和恶意回帖,在19楼用下面的代码测试,没有反映,不知道为什么,请教unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ToolWin, IdCookieManager, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, ExtCtrls;type TForm1 = class(TForm) IdHTTP1: TIdHTTP; IdCookieManager1: TIdCookieManager; ToolBar1: TToolBar; LoginBtn: TButton; ToolButton1: TToolButton; Memo1: TMemo; Button1: TButton; ToolButton2: TToolButton; Timer1: TTimer; procedure LoginBtnClick(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure IdHTTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.LoginBtnClick(Sender: TObject);var Params:TStrings; res:TStringStream; Url:String;begin IdHTTP1.ReadTimeout:= 25000; IdHTTP1.Request.Accept:= '*/*'; IdHTTP1.Request.AcceptEncoding:= 'gzip, deflate'; IdHTTP1.Request.AcceptLanguage:= 'zh-cn'; IdHTTP1.Request.CacheControl:= 'no-cache'; IdHTTP1.Request.Connection:= 'Keep-Alive'; IdHTTP1.Request.ContentLength:=80; IdHTTP1.Request.ContentType:= 'application/x-www-form-urlencoded'; IdHTTP1.Request.Host:= 'www.19lou.com'; IdHTTP1.Request.Referer:= '*********************************************************'; IdHTTP1.Request.UserAgent:= 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)'; Params :=TStringList.Create; try Params.Append('loginsubmit=login'); Params.Append('next=1'); Params.Append('password=*********'); Params.Append('submit=?'); Params.Append('username=***********'); try Url := '***************************************************'; IdHTTP1.HandleRedirects:=True; res := TStringStream.Create(''); IdHTTP1.Post(Url,Params,res); UTF8Decode(TStringStream(IdHTTP1.Response.ContentStream).dataString); Memo1.Lines.Add(res.DataString); except end; finally Params.Free; end;end;procedure TForm1.Button1Click(Sender: TObject);var Params:TStrings; res:TStringStream; Url:String;begin Timer1.Enabled:=False; Params :=TStringList.Create; res := TStringStream.Create(''); Params.Append('formhash=4811a0b6'); Params.Append('isblog='); Params.Append('iswater= 0'); Params.Append('message=******************************'+TimeToStr(Time)); Params.Append('mxfid=1637'); Params.Append('mxtid=26512656'); Params.Append('referer='); Params.Append('subject='); Params.Append('usesig=1'); Memo1.Lines.Add('发帖开始时间: '+TimeToStr(Time)); Url:= '***********************************************************'; try IdHTTP1.Post(Url,Params,res); except Memo1.Lines.Add('Error+++++++++++++++++++++++++++++++++++++++++'); end; Memo1.Lines.Add('发帖结束时间: '+TimeToStr(Time)); Timer1.Enabled:=True;end;procedure TForm1.Timer1Timer(Sender: TObject);begin Button1.Click;end;procedure TForm1.IdHTTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);begin Memo1.Lines.Add('****************************(DEBUG开始)***************************'); Memo1.Lines.Add('=======(访问页面)========='); Memo1.Lines.Add(IdHTTP1.URL.URI); Memo1.Lines.Add('=======(页面信息)========='); Memo1.Lines.Add(IdHttp1.ResponseText); Memo1.Lines.Add('=======(页面反馈)========='); Memo1.Lines.Add('-------[发送过去的信息]---------------'); Memo1.Lines.AddStrings(IdHTTP1.Request.RawHeaders); Memo1.Lines.Add('-------[发送过去的自定义信息]---------------'); Memo1.Lines.AddStrings(IdHTTP1.Request.CustomHeaders); Memo1.Lines.Add('-------[返回回来的信息]---------------'); Memo1.Lines.AddStrings(IdHTTP1.Response.RawHeaders); Memo1.Lines.Add('-------[返回回来的自定义信息]---------------'); Memo1.Lines.AddStrings(IdHTTP1.Response.CustomHeaders); Memo1.Lines.Add('=======(页面内容)========='); Memo1.Lines.Add(UTF8Decode(TStringStream(IdHTTP1.Response.ContentStream).dataString)); Memo1.Lines.Add('***************************(DEBUG结束)***************************');end;end.
 
有没有错误信息?只有两种情况:一、你的数据没有正确提交二、提交的数据未通过网站的检测
 
网站一般都会检测refer,把这个也填上试试还有,看你收到的反馈信息,会有提示的吧
 
我估计是数据没有正确提交,但是又检测不出什么问题,请高手帮忙测试下代码,谢谢啦。
 
Params:TStrings;这种类型提交,网站服务器校验稍严格一点,你的程序就死俏俏!
 
那应该怎么做?请教。
 
你用FireFox看一下,用浏览器操作网站的时候发出去的是什么数据然后对比一下你的程序就知道问题在哪里了。
 
后退
顶部