首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过TClientSocket从网站加载图像

通过TClientSocket从网站加载图像
EN

Stack Overflow用户
提问于 2016-03-11 17:10:06
回答 1查看 105关注 0票数 1

我试图通过TClientSocket.从网站加载图像我不喜欢使用TClinetSocket和其他组件,比如INDY或其他组件。

代码语言:javascript
复制
  SckServer.Close;
  SckServer.port:=80;
  SckServer.Address:='127.0.0.1';
  SckServer.Open;

  procedure TForm1.Button3Click(Sender: TObject);
  begin
    img_url:='/img/logo.png';

    SckServer.Socket.SendText(
      'GET '+img_url+' HTTP/1.1' + #13#10 +
      'Host: localhost.com' + #13#10 +
      'User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021204' + #13#10 +
      'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1' + #13#10 +
      'Accept-Language: en-us, en;q=0.50' + #13#10 +
      'Accept-Encoding: gzip, deflate, compress;q=0.9' + #13#10 +
      'Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66' + #13#10 +
      'Keep-Alive: 300' + #13#10 +
      'Connection: keep-alive' + #13#10 +
      'Cache-Control: max-age=0' +#13#10 +
      'Referer: http://localhost.com'+ #13#10 +
      #13#10
    );      
  end;

  procedure TForm1.SckServerRead(Sender: TObject; Socket: TCustomWinSocket);
  begin
    form1.caption:='Ready';
    s:= s+SckServer.Socket.ReceiveText;

    s:=StringReplace(s, #10, '', [rfReplaceAll]);
    s:=StringReplace(s, #13, '', [rfReplaceAll]);
    s:=StringReplace(s, '¶', '', [rfReplaceAll]);

    memo1.Lines.Add(s);
  end;

响应文本是

HTTP/1.1 200正常 服务器: nginx/1.8.1 日期:2016年3月11日星期五16:53:29 内容-类型:图像/png 内容长度: 1248 连接:保持连接 P3P: CP="NOI DEVa TAIa OUR BUS UNI STA“ 最后修改:2016年3月11日星期五16:53:29格林尼治标准时间 截止时间:2016年3月11日星期五16:53:29格林尼治时间 缓存控制:私有的,无缓存的,无存储的,必须重新验证的,最大年龄=0 Pragma:无缓存‰PNG

我在回应中没有看到图像

EN

回答 1

Stack Overflow用户

发布于 2016-03-11 18:13:37

图像是二进制数据,TMemo不能显示图像。

客户端代码需要先读取HTTP头,然后解析它们以发现字节大小和传输格式,然后将HTTP响应体的二进制有效载荷(在本例中是Content-Length头指示的1248字节)读入一个字节数组或流中,然后可以使用它来使用TPngImage或类似类创建映像。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35946043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档