Загружаемое изображение, которое я загружаю, является нулевым - PullRequest
0 голосов
/ 09 августа 2011

Моя цель - загрузить изображения с сервера Google App Engine с помощью моего приложения для Android.Я использую для этого асинктическую задачу.Сервер находится в Google App Engine, а изображения (файлы JPEG) - в Blobstore.Сначала я проверил, работает ли сервер с моим браузером Google Chrome.Я мог видеть изображение с тем же URI в моем браузере.Так что мой сервер работает нормально.Мое соединение имеет сеанс, и это соединение https.Мое приложение должно загружать изображения как рисованные (или растровые?) И создавать из них массив и помещать этот массив в графический адаптер для галереи.Проблема в том, что когда я делаю Drawable myImage = Drawable.createFromStream (is, "Image");myImage является нулевым.(Я проверяю это с помощью If (myImage == null)).Почему мой браузер показывает изображение, но в моем коде оно пустое?

PS: я провел большой поиск, но существует множество альтернатив для загрузки изображения из Интернета.Но я не могу понять, почему это не работает.Я запустил код на Android 2.2.

Вот код:

        URI uri = new URI(URIString);

        HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;

        SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
        socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);

        Scheme sch = new Scheme("https", socketFactory, 443);
        httpclient.getConnectionManager().getSchemeRegistry().register(sch);

        HttpGet httpget = new HttpGet(uri);

        System.out.println(httpget.getURI());

        HttpResponse response = httpclient.execute(httpget, myLibrary.localContext);

        HttpEntity entity = response.getEntity();

        InputStream is = entity.getContent();

        Drawable myImage= Drawable.createFromStream(is, "Image");
        entity.consumeContent();

        if (myImage!=null){
            System.out.println("PhotoID " + PhotoID + " is NOT null!");
            return myImage;
        } else {
            System.out.println("PhotoID " + PhotoID + " is null!");
            return null;
        }

Спасибо за любую идею!

1 Ответ

1 голос
/ 09 августа 2011

Вы должны проверить состояние ответа, прежде чем пытаться проанализировать объект ответа. HTTP-статус ответа - это первое место для проверки на наличие ошибок. Это можно проверить с помощью response.getStatusLine().getStatusCode(). Если это не 200, значит, есть проблема с вашим HTTP-запросом, и это вызывает вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...