TIdHTTP->Get(), сервер игнорирует параметры

У меня есть этот запрос:

https://api-v3.mojepanstwo.pl/dane/krs_podmioty.json?conditions%5Bkrs_podmioty.nip%5D=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

1 ответ

Решение

Ваша версия Indy устарела. Последняя версия, на момент написания этой статьи, 10.6.2.5448. Используя последнюю версию, я не могу воспроизвести вашу проблему. Обе URL-кодировки возвращают одни и те же данные для меня. Как и должно быть, поскольку веб-сервер требуется для декодирования urlencoded символов при обработке запрошенного URL. conditions%5Bkrs_podmioty.nip%5D=7282827109 а также conditions[krs_podmioty.nip]=7282827109 должен обрабатываться сервером точно так же, как это семантически идентичные данные.

Другие вопросы по тегам