IDHTPP是个好东西 现在我写的网络程序都用它
使用COOKIEMANAGER可以获取COOKIE后 保存在MEMO中 再赋值到IDHTTP上但是当跳转多个网页 或是 操作步骤过多的时 (多个POST GET 每次操作都会有新COOKIE信息)
那个COOKIE处理就感觉非常麻烦了
如果每次POST GET以后都清空Memo_Cookie来保存新的 那以前的COOKIE信息会丢失一点
如果不清空 都往Memo_Cookie里边添加COOKIE 那里边会有很多重复和冲突的COOKIE信息
如果自己处理COOKIE再往Memo_Cookie里边添加感觉又麻烦又有心无力
因为COOKIE信息很多 每次GET POST的COOKIE不同 网站不同又不同
请问大家有什么好办法能解决这个问题么? 谢谢
with IdHTTP do
begin
// IdHTTP 设置
HTTPOptions := HTTPOptions + [hoKeepOrigProtocol]; //PV1_1
ProtocolVersion := pv1_1;
HTTPOptions := HTTPOptions - [hoForceEncodeParams]; //去掉自动编码
AllowCookies := True;
CookieManager := IdCookieManager1;
HandleRedirects := True;
// IdHTTP 提交信息的设置
Request.Accept := '*/*';
Request.Connection :='Keep-Alive';
Request.AcceptLanguage := 'zh-cn';
Request.ContentType := 'application/x-www-form-urlencoded';
Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)';
Request.Referer := ComboBox_RefererURL.Text;
Request.CustomHeaders.Text := 'Cookie: '+ Memo_Cookie.Lines.Text; SS := TStringStream.Create('', TEncoding.UTF8);
end;
try
Post(Trim(ComboBox_PostURL.Text), Memo_Post.Lines, SS); // ---- POST数据
Memo_BackInfo.Lines.Text := ResponseText + #13#10+ Response.RawHeaders.Text;
Memo_BackData.Lines.Text := SS.DataString;
finally
FreeAndNil(SS);
end;
//-------- IdCookieManager 添加COOKIE
procedure TForm1.IdCookieManager1NewCookie(ASender: TObject;
ACookie: TIdCookieRFC2109; var VAccept: Boolean);
begin
Memo_Cookie.Lines.Add(ACookie.ClientCookie);
end;
使用COOKIEMANAGER可以获取COOKIE后 保存在MEMO中 再赋值到IDHTTP上但是当跳转多个网页 或是 操作步骤过多的时 (多个POST GET 每次操作都会有新COOKIE信息)
那个COOKIE处理就感觉非常麻烦了
如果每次POST GET以后都清空Memo_Cookie来保存新的 那以前的COOKIE信息会丢失一点
如果不清空 都往Memo_Cookie里边添加COOKIE 那里边会有很多重复和冲突的COOKIE信息
如果自己处理COOKIE再往Memo_Cookie里边添加感觉又麻烦又有心无力
因为COOKIE信息很多 每次GET POST的COOKIE不同 网站不同又不同
请问大家有什么好办法能解决这个问题么? 谢谢
with IdHTTP do
begin
// IdHTTP 设置
HTTPOptions := HTTPOptions + [hoKeepOrigProtocol]; //PV1_1
ProtocolVersion := pv1_1;
HTTPOptions := HTTPOptions - [hoForceEncodeParams]; //去掉自动编码
AllowCookies := True;
CookieManager := IdCookieManager1;
HandleRedirects := True;
// IdHTTP 提交信息的设置
Request.Accept := '*/*';
Request.Connection :='Keep-Alive';
Request.AcceptLanguage := 'zh-cn';
Request.ContentType := 'application/x-www-form-urlencoded';
Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)';
Request.Referer := ComboBox_RefererURL.Text;
Request.CustomHeaders.Text := 'Cookie: '+ Memo_Cookie.Lines.Text; SS := TStringStream.Create('', TEncoding.UTF8);
end;
try
Post(Trim(ComboBox_PostURL.Text), Memo_Post.Lines, SS); // ---- POST数据
Memo_BackInfo.Lines.Text := ResponseText + #13#10+ Response.RawHeaders.Text;
Memo_BackData.Lines.Text := SS.DataString;
finally
FreeAndNil(SS);
end;
//-------- IdCookieManager 添加COOKIE
procedure TForm1.IdCookieManager1NewCookie(ASender: TObject;
ACookie: TIdCookieRFC2109; var VAccept: Boolean);
begin
Memo_Cookie.Lines.Add(ACookie.ClientCookie);
end;
InternetGetCookie根据url获取cookie,可以区分不同网站的cookie。
这个应该没你那样处理麻烦。
由它获取的COOKIE 保存到某个变量中
在多次POST GET以后
里边的保存的COOKIE信息会重复和冲突
就是想知道正规作法是怎么处理的?IDHTTP用了很久 简单易学 用起来也能满足我的需要