idhttp post注册网站 总返回200

rryr2 2010-03-15 12:13:48
好心人帮助下 小弟感激不尽。
盛大注册账号,抓包看到COOKIE不一样,是不是要组合COOKIE,还有那个提交按钮代码里用中文,抓包显示“.....”几个点,不知是不是这问题,但我不知怎么解决,只好抓包里的复制过来。
code:

const
hosturl = 'http://register.sdo.com/PTNew/index.aspx';//盛大注册网页,用第一个方式注册
procedure TForm3.btn1Click(Sender: TObject);
var
SurfUrl, tmpstr: string;
stra, SessionID, sessionc,viewstate,EVENTVALIDATION: string;
i: Cardinal;
p2: TStrings;
Params, backdata:TStringStream;
begin
mmo1.Clear;
Params := TStringStream.Create;
p2 := TStringList.Create;
httpp1 := tidhttp.Create(self);

backdata:=TStringStream.Create;
with httpp1 do
begin
Disconnect;
Get(hosturl,backdata);
//SessionID get
for i := 0 to Response.RawHeaders.Count - 1 do
if Pos('Set-Cookie: ASP.NET_SessionId=', Response.RawHeaders[i]) > 0 then
begin
SessionID := Trim(Copy(Response.RawHeaders[i], 31, maxint));
SessionID := Copy(SessionID, 1, Pos(';', SessionID) - 1);
Break;
end;
stra := Response.CustomHeaders.Values['Set-Cookie'];
/// viewstate get
i:=Pos('id="__VIEWSTATE"', backdata.DataString );
if i>0 then
begin
viewstate:= Copy(backdata.DataString, i+24, 105);
viewstate:= Copy(viewstate, 1, Pos('"', viewstate)-1 );
end;
//get EVENTVALIDATION
i:=Pos('id="__EVENTVALIDATION"', backdata.DataString );
if i>0 then
begin
EVENTVALIDATION:= Copy(backdata.DataString, i+30, 195);
EVENTVALIDATION:= Copy(EVENTVALIDATION, 1, Pos('"', EVENTVALIDATION)-1 );
end;
end;
backdata.Free;
SurfUrl :=
'http://register.sdo.com/PTNew/ExistPtid.ashx?username=' + edtUser.Text +
'&sid='+SessionID+'&new=1';
stra := httpp1.Post(SurfUrl, p2);
edt1.Text:=stra;

Params.Clear;
Params.WriteString(
'__VIEWSTATE='+viewstate);
Params.WriteString('&ioBB=');
Params.WriteString('®sdid=');
Params.WriteString('&chksdid=false');
Params.WriteString('&hidRecName001=');
Params.WriteString('&hidRecName002=');
Params.WriteString('&hidRecRule001=');
Params.WriteString('&hidRecRule002=');
Params.WriteString('&agent4IpCheck=checkIp');
Params.WriteString('&txtRegisterFrom=0');
Params.WriteString('&txtRegisterZone=0');

Params.WriteString('&sessionid=' + SessionID); // 2009/11/8 12:53:19 http://www.sdo.com/IndexIframeLogin.asp
Params.WriteString('&goldtype=');
Params.WriteString('&partner=');
Params.WriteString('&apptype=');
Params.WriteString('&agent=');
Params.WriteString('&ctype=');
Params.WriteString('&hidExinfo=');
Params.WriteString('&qqaccount=');
Params.WriteString('&CUSTOM_REG_EVN=');
Params.WriteString('&cus_field_1=');
Params.WriteString('&cus_field_2=');
Params.WriteString('&cus_field_3=');
Params.WriteString('&ui_type='); Params.WriteString('&cus_section_1=');
Params.WriteString('&ptType=0');
Params.WriteString('&username=' + edtUser.Text);
Params.WriteString('&UserEmailId=');
Params.WriteString('&UserEmail139Id=');
Params.WriteString('&UserCellphoneId=');
Params.WriteString('&password=111222a');
Params.WriteString('&repassword=111222a');
Params.WriteString('&PTUserEmailId=');
Params.WriteString('&mobile=');
Params.WriteString('&PromoterID=');
Params.WriteString('&realname=');
Params.WriteString('&idcard=');
Params.WriteString('&birthday=');
Params.WriteString('&phone=');
Params.WriteString('&ddlQuestion1=');
Params.WriteString('&question1=');
Params.WriteString('&answer1=');
Params.WriteString('&ddlQuestion2=');
Params.WriteString('&question2=');
Params.WriteString('&answer2=');
Params.WriteString('&attcode2=123456');
Params.WriteString('&chkAgreement=1');
Params.WriteString(
'&btnSubmit=%B4%B4%BD%A8%CE%D2%B5%C4%CA%A2%B4%F3%CD%A8%D0%D0%D6%A4');
Params.WriteString(
'&__EVENTVALIDATION='+EVENTVALIDATION);

with httpp1 do
begin
// Request.CustomHeaders.Clear;
Request.CacheControl := 'no-cache';
AllowCookies := true;
HTTPOptions := [hoForceEncodeParams];
ProtocolVersion := pv1_1;
HTTPOptions := HTTPOptions + [hoKeepOrigProtocol];

Request.Accept :=
'image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash,' + ' application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-silverlight, application/QVOD, application/QVOD, */*';
Request.AcceptLanguage := 'zh-CN';
Request.UserAgent :=
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)';
Request.Connection := 'Keep-Alive';
Request.AcceptEncoding := 'gzip, deflate';
Request.Host := 'register.sdo.com';
Request.ContentLength := Length(Params.ToString);
Request.Referer := 'http://register.sdo.com/PTNew/index.aspx?';
//Request.From:= 'http://register.sdo.com/PTNew/index.aspx?from=0';
// HandleRedirects := true;
Request.ContentType := 'application/x-www-form-urlencoded';
end;
try
// getcook;
tmpstr := httpp1.Post(hosturl, Params);
// Application.ProcessMessages;
finally
mmo1.Text := httpp1.ResponseText;
mmo1.Lines.add(tmpstr);
end;
httpp1.Disconnect;
FreeAndNil(httpp1);FreeAndNil(Params);
end;
...全文
408 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nio23 2010-03-28
  • 打赏
  • 举报
回复
200 是表示你提交的数据成功发送了,你还想干什么?说清楚
heiyuyun 2010-03-19
  • 打赏
  • 举报
回复
好像200是正确的,如果用 ‘PROPFIND’,那返回207就是正确的
SQLDebug_Fan 2010-03-18
  • 打赏
  • 举报
回复
HTTP协议返回200是OK,表示你提交正常,404才是错误。
kfcoffe 2010-03-18
  • 打赏
  • 举报
回复
up
mark
rryr2 2010-03-16
  • 打赏
  • 举报
回复
没人解答?一直困扰的问题 谁能帮帮

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

http://feiyun0112.cnblogs.com/

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧