|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
ti9er (TiGeR) |
★☆☆☆☆ |
-
|
普通会员 |
|
2013/10/25 16:21:44 |
标题: |
Clever Internet Suite使用环境问题 |
浏览:2112 |
|
加入我的收藏 |
楼主: |
类似下面的代码 :
var post_response: TStringStream; HtmlParser: TStrings; begin
...
clHttpRequestInit;
clHttpRequest.Header.Accept := 'image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*'; clHttpRequest.Header.ContentType := 'application/x-www-form-urlencoded'; clHttpRequest.Header.CacheControl := 'no-cache';
clHttpRequest.AddFormField('pageNo', '1'); clHttpRequest.AddFormField('total', ''); clHttpRequest.AddFormField('SortField', ''); clHttpRequest.AddFormField('SortType', 'abc');
post_response := TStringStream.Create('', TEncoding.UTF8); HtmlParser := TStringList.Create ;
clHttp.post(BaseURL + '/search.do?method=get',clHttpRequest, post_response);
HtmlParser.Text := post_response.DataString;
clHtmlParser.Parse(HtmlParser); clHtmlParser.links.AssignList(ListBox_ResponseLink.Items);
... end
在XE3下可以从页面获取数据,但是在XE5下却取不到
环境分别为 : XE3 + CIS 7.6 XE5 + CIS 7.8
7.8版本使用上有变化?或者出现新的bug?
----------------------------------------------
- |
作者: |
|
2013/10/26 12:15:01 |
1楼: |
用抓包工具抓一下兩者發送的包有什麼不同就知道了,瞎猜很浪費時間的。
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
|
作者: |
ti9er (TiGeR) |
★☆☆☆☆ |
-
|
普通会员 |
|
2013/10/27 9:21:57 |
2楼: |
用HTTP Analyzer监控了一下,相同的header和postdata,与IE访问的区别为 :
ie8的是Content-Length:129 cis的是Content-Length:120
----------------------------------------------
-
|
作者: |
ti9er (TiGeR) |
★☆☆☆☆ |
-
|
普通会员 |
|
2013/10/27 10:09:59 |
3楼: |
用IE8和XE3+CIS 7.6,都可以返回数据库查询结果数据 CIS 7.8则是没有数据库查询结果的
CIS 7.8的TclHTTP新增了个SilentHTTP属性,设为true或false都没变化
而程序中另外一个模块也有类似的post查询数据库,则在7.6和7.8下都好使
实在是想不明白了
----------------------------------------------
-
|
作者: |
ti9er (TiGeR) |
★☆☆☆☆ |
-
|
普通会员 |
|
2013/11/13 0:03:18 |
4楼: |
应该是编码的问题,其中有FormField为汉字,post后为GB2312编码的
clHttpRequest.AddFormField('Status', '待处理');
IE8为 : Status=%E5%BE%85%E5%A4%84%E7%90%86
pageNo=1&total=&SortField=&SortType=&PromTitle=&C1=&Status=%E5%BE%85%E5%A4%84%E7%90%86
CIS默认为 : Status=%B4%FD%B4%A6%C0%ED
pageNo=1&total=&SortField=&SortType=&PromTitle=&C1=&Status=%B4%FD%B4%A6%C0%ED
CIS使用HTTPEncode(AnsiToUtf8('待处理')),则为 : Status=%25E5%25BE%2585%25E5%25A4%2584%25E7%2590%2586 , 多了'25'
pageNo=1&total=&SortField=&SortType=&PromTitle=&C1=&Status=%25E5%25BE%2585%25E5%25A4%2584%25E7%2590%2586
应该如何转换,才能变成IE8的编码结果呢?
----------------------------------------------
-
|
作者: |
ti9er (TiGeR) |
★☆☆☆☆ |
-
|
普通会员 |
|
2013/11/13 9:31:35 |
5楼: |
哪位大侠帮忙看看
----------------------------------------------
-
|
作者: |
ti9er (TiGeR) |
★☆☆☆☆ |
-
|
普通会员 |
|
2013/11/13 10:26:11 |
6楼: |
解决了 :
clHttpRequest.Header.CharSet := 'UTF-8'; // 解决XE5下汉字编码成GB2312的问题
7.6之前是硬编码,之后是函数从这里获取的
----------------------------------------------
-
|
|