大家好,又见面了,我是你们的朋友全栈君。
Delphi中强制IdHTTP使用HTTP1.1(转)
2011-07-18 07:46 952人阅读 评论(0) 收藏 举报
分类:
Delphi IdHttp控件(29)
前两天帮人写程序
用IdHTTP控件往一网站发包
如下:
Delphi代码
IdHTTP1.Request.Connection:=’Keep-Alive’;
IdHTTP1.Request.UserAgent:=’Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon)’;
IdHTTP1.Request.ContentType:=’application/x-www-form-urlencoded’;
IdHTTP1.Request.Referer:=’http://www.xxx.com’;
IdHTTP1.Request.Accept:=’image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*’;
IdHTTP1.Request.AcceptLanguage:=’zh-cn’;
IdHTTP1.Request.AcceptEncoding:=’gzip, deflate’;
IdHTTP1.Request.CacheControl:=’no-cache’;
IdHTTP1.ReadTimeout:=60000;
IdHTTP1.ProtocolVersion:=pv1_1;
sHtml:=IdHTTP1.Post(‘http://www.xxx.com/login.asp’,sPost);
但用抓包工具看,却发现是用的http1.0,而不是http1.1,明明设置了IdHTTP1.ProtocolVersion:=pv1_1
查看INDY的源码,发现在IdHTTP.pas中有如下代码和注释:
Delphi代码
OldProtocol := FProtocolVersion;
// If hoKeepOrigProtocol is SET, is possible to assume that the developer
// is sure in operations of the server
if not (hoKeepOrigProtocol in FOptions) then
FProtocolVersion := pv1_0;
原因很明显了,于是改代码:
Delphi代码
IdHTTP1.Request.Connection:=’Keep-Alive’;
IdHTTP1.Request.UserAgent:=’Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon)’;
IdHTTP1.Request.ContentType:=’application/x-www-form-urlencoded’;
IdHTTP1.Request.Referer:=’http://www.xxx.com’;
IdHTTP1.Request.Accept:=’image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*’;
IdHTTP1.Request.AcceptLanguage:=’zh-cn’;
IdHTTP1.Request.AcceptEncoding:=’gzip, deflate’;
IdHTTP1.Request.CacheControl:=’no-cache’;
IdHTTP1.ReadTimeout:=60000;
IdHTTP1.HTTPOptions:=IdHTTP1.HTTPOptions+[hoKeepOrigProtocol];//关键这行
IdHTTP1.ProtocolVersion:=pv1_1;
sHtml:=IdHTTP1.Post(‘http://www.xxx.com/login.asp’,sPost);
再用抓包工具看,能看到确实是使用http1.1协议了。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/159708.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...