Delphi - Indy TIdHttp.Get具有较大的URL长度

时间:2013-07-23 19:37:51

标签: string delphi http indy idhttp

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

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

Delphi的编译器给我错误:

  

“字符串文字最多可包含255个元素”

是否有任何解决方案或不同的第三方组件可以解决此问题?

2 个答案:

答案 0 :(得分: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');

答案 1 :(得分:3)

TIdHTTP不对URL长度施加任何限制,更不用说255个字符的限制。但是,HTTP服务器可能会对其结束施加此类限制,如果确实如此,那么请求将失败并显示HTTP 414 Request-URI Too Long错误代码,符合RFC 2616 Section 10.4.15

  

10.4.15 414 Request-URI太长

     

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