读书人

於idhttp Get跟post返回值法的

发布时间: 2013-01-04 10:04:16 作者: rapoo

於idhttp Get和post返回值法的
最近在idhttp.就拿了一小手。著看能不能出登。但是我碰到了一很奇怪的事情。

我用工具。查看。如果正登後。返回一段的字符串。
ok:<script type="text/javascript" src="http://bbs.snsfun.com/api/uc.php?time=1331206960&code=8285iPdm%2F3E9AdCQN6070SzN6e9T8Dkkvh6kyYvXTrQTx0DgN0mpCI3%2Fbm5kI1D%2FoyxNdsGkjSekKjBueGc42lsOM%2FUQ2G9jaxw5uH82XXh7wO%2FwWUHOz2LULkP%2BGxGi3ezEFqNvZBL6fK2pXTamWJFsL9V7q8r0t9oC6lFGTk4Vybw" reload="1"></script>

然後我著自己程序去。果字符串我怎也不出。但是我看取的COOKIES又是正的。那明我成功了。

PostData:= TStringStream.Create( Format(Const_PostLoginInfo, [edt1.Text,edt2.Text]));
RespData:= TStringStream.Create('');

idhtp1.ReadTimeout:= 15000;
idhtp1.Request.Accept:= 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, */*' ;
idhtp1.Request.ContentType:= 'application/x-www-form-urlencoded';
idhtp1.Request.Host:= 'www.snsfun.com';
idhtp1.Request.Referer:= 'http://www.snsfun.com/wly/';
idhtp1.Request.UserAgent:= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; 360SE)';
idhtp1.Request.AcceptEncoding:= 'gzip, deflate';
idhtp1.Request.Connection := 'Keep-Alive';
// RetStr :=

tmpStr := idhtp1.Post('http://www.snsfun.com//user/check.php?ac=login', PostData);
tmpStr:=UnicodeToAnsi((tmpStr));

代如下。我著用另外一。可以出。不知道什。是不是因返回值是unicode的。但是我了是不行。希望高手能指一下。了。


[解决办法]
添加以下设置
gethttp.Request.AcceptCharSet := 'GBK,utf-8;q=0.7,*;q=0.3';
gethttp.Request.AcceptEncoding := '';
gethttp.Request.AcceptLanguage := 'zh-CN';

idhtp1.Request.AcceptEncoding:= 'gzip, deflate';
这句你必须去掉(毫无用处)应该就能看到数据了,,不同网站返回数据可能是不同编码,这就需要相应的解码。
有极个别网站硬性返回'gzip, deflate'数据,这就需要你解压缩,再解码。

读书人网 >.NET

热点推荐