我正在尝试使用Indy 10中的GET方法,但是我的URL长度大于255个字符。 GET方法只接受“字符串”参数。
body := httpCom.Get('..........wide string.........')
Delphi的编译器给我错误:
“字符串文字最多可包含255个元素”
是否有任何解决方案或不同的第三方组件可以解决此问题?
答案 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的缓冲区。