TIdHTTP->Get() ,服务器忽略参数

TIdHTTP->Get() , Server ignores parameters

我有这个查询:

https://api-v3.mojepanstwo.pl/dane/krs_podmioty.json?conditions[krs_podmioty.nip]=7282827109

在浏览器中,它工作正常,显示特定于给定 nip 号码的数据。

但是在 Indy 中,我得到的响应好像省略了查询部分:

https://api-v3.mojepanstwo.pl/dane/krs_podmioty.json

到目前为止我已经试过了:

BurL = "https://api-v3.mojepanstwo.pl/dane/krs_podmioty.json?conditions[krs_podmioty.nip]=7282827109";

BurL = TIdURI::URLEncode("https://api-v3.mojepanstwo.pl/dane/krs_podmioty.json?conditions[krs_podmioty.nip]=7282827109");

甚至结束原始 urlencoded 数据:

BurL= "https://api-v3.mojepanstwo.pl/dane/krs_podmioty.json?conditions%5Bkrs_podmioty.nip%5D=7282827109";

代码:

try {
     Resp = IdHTTPKrs->Get(BurL);
    } catch (EIdHTTPProtocolException& e) {
    ShowMessage(e.Message);
}

出了什么问题,我该如何解决?或者,也许我已经太累了,错过了一些明显的东西?

我怀疑查询的 [] 部分有问题,但我只是猜测。没有 [] 的类似查询工作正常。

我正在使用 C++Builder XE6 pro,Indy 10.6.0.512

您的 Indy 版本已过时。在撰写本文时,最新版本是 10.6.2.5448。使用最新版本,我无法重现您的问题。两个 URL 编码 return 对我来说是相同的数据。正如他们应该的那样,因为在处理请求的 URL 时需要 Web 服务器解码 urlencoded 字符。 conditions%5Bkrs_podmioty.nip%5D=7282827109conditions[krs_podmioty.nip]=7282827109 应该 由服务器以完全相同的方式处理,因为它们是语义相同的数据。