-1

我无法让 Indy 返回某些 URL,我不确定发生了什么。我有一些非常简单的测试代码来返回我想要的 URL 并将 HTML 放入 TMemo。

With IdHTTP Do
Begin
  s := Get(txtURL.Text);
  txtOutput.Lines.Add('-------' + sLineBreak + sLineBreak + s);
End;

然而,当我用这个 url 尝试它时:- http://nuediamonds.com/synthetic_diamond_rings.php它永远不会返回并且只是锁定。我添加了一个 OnWork 事件,但我在那里看到的只是内容长度始终为 -1

有没有人有任何想法,我迫切需要解决这个问题。

问候安东尼

4

1 回答 1

1

使用当前的 Indy 10 SVN 快照,您显示的 URL 对我来说很好。它不会卡住。

至于为什么ContentLength属性是-1,当没有Content-Length标题时会发生这种情况。这可能是由于以下几个原因之一:

  1. 存在Transfer-Encoding标头并指定chunked正在使用的编码。分块数据是自终止的。

  2. 存在一个Content-Type标头,指定正在发送 MIMEmultipart/...数据,例如multipart/byteranges. MIME 是自动终止的。

  3. 通过让服务器关闭连接来终止 HTTP 响应。

请参阅RFC 2616 第 4.4 节“消息长度”。更多细节。

于 2013-09-02T18:47:09.930 回答