2

我正在尝试使用 Indy 10 中的 GET 方法,但是我的 URL 长度大于 255 个字符。而 GET 方法只接受“字符串”参数。

body := httpCom.Get('..........wide string.........')

Delphi的编译器给我错误:

“字符串文字最多可以有 255 个元素”

是否有任何解决方案或不同的第三方组件来解决这个问题?

4

2 回答 2

6

字符串类型没有问题,但IDE,你可以这样写,例如

Const
   C_URL = 'A long text with 255 Characters ....to be contionued ...'
          +'more content....to be contionued ... '
          +'more more content....to be contionued ... '
          +'enough content';
begin
  IDHTTP1.Get(C_URL);
end;

或者

  IDHTTP1.Get( 'A long text with 255 Characters ....to be contionued ...'
          +'more content....to be contionued ... '
          +'more more content....to be contionued ... '
          +'enough content');
于 2013-07-23T19:54:04.157 回答
3

TIdHTTP不对 URL 长度施加任何限制,更不用说 255 个字符的限制。但是,HTTP 服务器可能会在其端施加这样的限制,如果这样做,则请求应该失败并返回 HTTP414 Request-URI Too Long错误代码,根据RFC 2616 第 10.4.15 节

10.4.15 414 请求 URI 太长

服务器拒绝为请求提供服务,因为 Request-URI 比服务器愿意解释的要长。这种罕见的情况只有在客户端错误地将 POST 请求转换为具有长查询信息的 GET 请求时才可能发生,此时客户端已下降到重定向的 URI“黑洞”(例如,重定向的 URI 前缀指向本身的后缀),或者当服务器受到客户端的攻击时,客户端试图利用某些服务器中存在的安全漏洞,使用固定长度的缓冲区来读取或操作 Request-URI。

于 2013-07-23T19:40:20.440 回答