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