老问题没解决,新问题又来了,还是idhttp

xiaoxingchi 2012-09-06 01:11:59
http://www.118100.cn/action/secweborder/isCTMobile.do?mobile=13325152233

delphi2010 这个本来就返回一个1字符串,但是怎么转都是乱码。

procedure TForm1.Button6Click(Sender: TObject);
var
ResponseStream:TStringStream;
begin
ResponseStream:=TStringstream.Create('',936);
IdHTTP1.Get('http://www.118100.cn/action/secweborder/isCTMobile.do?mobile=' + edit1.Text,ResponseStream);
//这是UTF-8网页
memo1.Lines.Add(UTF8Decode(ResponseStream.DataString));
Freeandnil(ResponseStream);


end;


但是用delphi 6的 idhttp.get回来的就能正确显示

求高人给个完整的代码,这两天为这事头疼死了。
...全文
269 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxingchi 2012-09-19
  • 打赏
  • 举报
回复
谢谢大家了,从delphi改成PHP了。。。
wzca 2012-09-07
  • 打赏
  • 举报
回复
另外:
rocedure TForm2.Button1Click(Sender: TObject);
var
ResponseStream: TStringStream;
i: integer;
URL: string;
begin
ResponseStream := TStringstream.Create('', 936);
IdHTTP1.Request.AcceptEncoding := 'identity';
URL := 'http://www.118100.cn/action/secweborder/isCTMobile.do?mobile=' + edit1.Text;
IdHTTP1.Get(URL, ResponseStream);
Memo1.Lines.Add('-------------------------');
Memo1.Lines.Add(URL);
// 这里不再需要对UTF8解码,因为它本来就不是UTF8
Memo1.Lines.Add(ResponseStream.DataString);
Freeandnil(ResponseStream);
end;
wzca 2012-09-07
  • 打赏
  • 举报
回复
http://my.csdn.net/my/code/detail/18338
wzca 2012-09-07
  • 打赏
  • 举报
回复
用不着这么费劲吧。
你不是用 Indy 的 Http 吗
在 Indy Misc 里有个 TIdCompressorZLib
在IdHttp 里,指定属性 Compressor = 这个 TIdCompressorZLib
全自动解码,嘿
beiguofengguang 2012-09-06
  • 打赏
  • 举报
回复
procedure DecompressGZip(AInStream, AOutStream: TStream);

procedure TDemoForm.DecompressGZip(AInStream, AOutStream: TStream);
var
pb1, pb2: Byte;
begin
AInStream.Seek(1, 0);
AInStream.Read(pb1, 1);
AInStream.Seek(2, 0);
AInStream.Read(pb2, 1);
AInStream.Position := 0;
AOutStream.Position := 0;
if (pb1 = $8B) and (pb2 = $8) then //gzip
ZDecompressStream2(AInStream, AOutStream, 47)
else
AOutStream.CopyFrom(AInStream, AInStream.Size);
end;

自己去下个ZLibEx单元,里边有ZDecompressStream2函数

beiguofengguang 2012-09-06
  • 打赏
  • 举报
回复
不是这些问题,是因为返回的内容压缩了,返回实际内容如下:
/**********************************************
HTTP/1.1 200 OK
Date: Thu, 06 Sep 2012 11:27:19 GMT
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Set-Cookie: JSESSIONID=03CDFB6D0A3F939F665E8C1CAA999103; Path=/
Server: N.WEBPROXY-1.20
Expires: Thu, 06 Sep 2012 11:27:19 GMT
Cache-Control: max-age=0
Content-Encoding: gzip

15
?

***************************/
要自己用gzip解压缩
Forever_Young 2012-09-06
  • 打赏
  • 举报
回复
你怎么就断定是代码转换的问题呢? 在GET前面加下面一行试试看。

IdHTTP1.Request.UserAgent:='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)';
bdmh 2012-09-06
  • 打赏
  • 举报
回复
你用TMemoryStream试试,或许是应为2010的string是unicode编码,d6还是ansi的

1,593

社区成员

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

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