0

我有这个查询:

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);
}

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

我怀疑[]查询的一部分有问题,但我只是在这里猜测。类似的查询没有[]工作OK。

我正在使用带有 Indy 10.6.0.512 的 C++Builder XE6 pro

4

1 回答 1

2

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

于 2018-02-24T19:28:31.680 回答