IdHTTP.Post 模拟提交服务器 提示500错误
god00 2011-06-17 11:45:12 procedure TForm1.ButtonClick(Sender: TObject);
var
IdHttp:TIdHTTP;
PostDataStream:TStringStream;
ParamData:TStringStream;
ParamStr:TStringList;
Html:string;
begin
IdHttp := TIdHTTP.Create(nil);
IdHttp.ProtocolVersion := pv1_1;
IdHttp.Request.Accept := 'application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/QVOD, application/QVOD, application/x-ms-application, application/x-ms-xbap, application/xaml+xml, */*'; //这里有时候会出错,编译不过来的。是不是字符串太长了,我删减了一半就可以编译。
IdHttp.Request.AcceptEncoding := 'gzip, deflate';
IdHttp.Request.AcceptLanguage := 'zh-cn';
IdHttp.Request.CacheControl := 'no-cache';
IdHttp.Request.Connection := 'Keep-Alive';
IdHttp.Request.ContentLength := 371;
IdHttp.Request.ContentType := 'application/x-www-form-urlencoded';
IdHttp.Request.Host := 'passport.cnblogs.com';
IdHttp.Request.Referer := 'http://passport.cnblogs.com/login.aspx';
IdHttp.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET4.0E; .NET4.0C)';
IdHttp.HandleRedirects := True;
//以上这些数据是HttpWatch抓包的。不知道对不对。
PostDataStream := TStringStream.Create('');
ParamData := TStringStream.Create('');
ParamStr := TStringList.Create;
// ParamData.WriteString(''); //这个也是同样问题字符串太长就编译不过来了。
ParamStr.Add('__EVENTTARGET=');
ParamStr.Add('__EVENTARGUMENT=');
ParamStr.Add('__VIEWSTATE=%2FwEPDwULLTE1MzYzODg2NzZkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBQtjaGtSZW1lbWJlcm1QYDyKKI9af4b67Mzq2xFaL9Bt');
ParamStr.Add('__EVENTVALIDATION=%2FwEWBQLWwpqPDQLyj%2FOQAgK3jsrkBALR55GJDgKC3IeGDE1m7t2mGlasoP1Hd9hLaFoI2G05');
ParamStr.Add('tbUserName=帐号');
ParamStr.Add('tbPassword=密码');
ParamStr.Add('btnLogin=%E7%99%BB++%E5%BD%95');
ParamStr.Add('txtReturnUrl=http%3A%2F%2Fhome.cnblogs.com%2F');
IdHTTP.Post('http://passport.cnblogs.com/login.aspx', ParamStr, PostDataStream);
//运行到这里就提示 HTTP/1.1 500 Internal Server Erro 错误。
postdatastream.Position:=0;
memo1.Text:=Utf8ToAnsi(postdatastream.DataString);
PostDataStream.Free;
ParamData.Free;
ParamStr.Free;
end;
怎么解决啊????????
还有 IdHTTP.Post 这个Post函数原形只有两个参数,这里为什么会有第三个PostDataStream?????