Разница между URLConnection getInputStream () и HttpEntity getContent () - PullRequest
2 голосов
/ 22 августа 2011

Я пытаюсь загрузить рис с определенного URL, сначала я использую этот способ, чтобы получить InputStream:

if (url != null) {
            URLConnection ucon = null;
            try {
                ucon = url.openConnection();
            } catch (IOException e2) {
                e2.printStackTrace();
            }

            if (ucon != null) {
                ucon.setConnectTimeout(CONN_TIMEOUT);
                ucon.setReadTimeout(READ_TIMEOUT);
                try {
                    is = ucon.getInputStream();

Это работает хорошо, но когда я пытаюсь скачать рис с http://111.12.12.232/images/face/bigface/339.gif Iне могу получить InputStream, но попробуйте использовать:

HttpParams params = new BasicHttpParams();
            HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
            HttpProtocolParams.setContentCharset(params, "UTF-8");

            HttpProtocolParams.setUseExpectContinue(params, false);
            HttpConnectionParams.setConnectionTimeout(params, CONN_TIMEOUT);

            HttpConnectionParams.setSoTimeout(params, READ_TIMEOUT);
            HttpGet getRequest;
            try {
                getRequest = new HttpGet(url.toURI());
                HttpClient client = new DefaultHttpClient(params);
                HttpResponse response = client.execute(getRequest);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();

Этот способ может успешно получить InputStream и загрузить gif.

Так что мне интересно, в чем разница между двумя методами?Благодаря ~

1 Ответ

1 голос
/ 09 января 2012

Это выглядит как сервер возвращает содержимое изображения, но также возвращает код ответа 404, который указывает на ошибку при выполнении запроса.

В 1.6 Sun / Oracle JDK HttpURLConnection, похоже, завершается с ошибкой IOException, когда он замечает код возврата, подобный этому, и не пытается вернуть содержимое. Я предполагаю, что платформа Android имеет такое же поведение, а используемая вами библиотека Apache HttpClient немного более устойчива к ошибкам конфигурации сервера.

...