Мой код (ниже) пытается получить окончательный URL-адрес, возвращенный с сервера, который выполняет некоторую переадресацию. Он отлично работает, пока URL-адреса имеют схему http. Моя проблема возникает, когда я хочу вернуть URL-адрес с другой схемой. В конечном итоге я хочу, чтобы в некоторых ситуациях вернуть рынок: // url или другие схемы запуска приложений, поскольку это для Android, и я хочу начать с ними намерения.Получить окончательный URL-адрес перенаправленного запроса с нетрадиционной схемой
Таким образом, это позволяет мне получить окончательный URL-адрес http-адреса, но когда конечный URL-адрес является рынком: // он выдает исключение (java.lang.IllegalStateException: схема «рынок» не зарегистрирован), а затем getURI не дает этого, он предоставит все, что было до этого.
DefaultHttpClient client = new DefaultHttpClient();
HttpContext httpContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet(mInitialUrl);
try {
client.execute(httpGet, httpContext);
} catch (IllegalStateException e) {
e.printStackTrace();
}
// Parse out the final uri.
HttpHost currentHost = (HttpHost) httpContext.getAttribute(ExecutionContext.HTTP_TARGET_HOST);
HttpUriRequest req = (HttpUriRequest) httpContext.getAttribute(ExecutionContext.HTTP_REQUEST);
return (req.getURI().isAbsolute()) ? req.getURI().toString() : (currentHost.toURI() + req.getURI());
Теперь, я мог бы просто зарегистрировать рынок: // в качестве схемы, но я не хочу, чтобы жестко прописать заранее, что действительные схемы, я просто хочу, чтобы принять их и вернуть их то, что они находятся.
Любые идеи? Может быть, я даже не поступил правильно. (Изменение поведения сервера в данном случае не является вариантом ... Мне нужно только иметь дело с переадресацией.)
Моя надежда заключается в том, что кто-то может сказать мне, как заставить HttpClient игнорировать схему, или, по крайней мере, сохранить окончательный URI, к которому он пытается получить доступ.
Быстрый тест с 'URLConnection' работает для меня. Вы можете использовать его вместо этого? – BalusC
Ооо, да. Я сделаю это. – Turnsole
Хорошо. Я отправил ответ. – BalusC