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
должен обрабатываться сервером точно так же, как это семантически идентичные данные.