Android - подключение к Flickr API и получение фотографий в Java - PullRequest
0 голосов
/ 09 ноября 2011

В настоящее время я работаю над приложением для Android и пытаюсь подключиться к Flickr и получить из него фотографии. Тем не менее, мой вызов HttpGet не удается полностью. Вот мой код:

HttpClient httpClient = new DefaultHttpClient();
String temp = restUrl.toString();
HttpGet httpGet = new HttpGet(temp);
try
{
        HttpEntity httpEntity = httpClient.execute(httpGet).getEntity();
        if (httpEntity != null)
        {
            InputStream inStream = httpEntity.getContent();
            Reader in = new InputStreamReader(inStream);
            BufferedReader bufferedReader = new BufferedReader(in);
            StringBuilder sBuilder = new StringBuilder();
            String stringReadline = null;
            while ((stringReadline = bufferedReader.readLine())!=null)
            {
                sBuilder.append(stringReadline+"\n");
            }
            queryResult = sBuilder.toString();
        }
    }

My temp хранит строку "http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=467ae9bf5926d10c684d4f47d7da6434&tags=new%20york&per_page=5&page1"

Вызов работает нормально, когда я звоню в браузере (он возвращает ожидаемый файл xml). Тем не менее, он не работает, когда я звоню из моего приложения для Android. Я добавил строку разрешений Интернета в мой файл манифеста Android.

Я был бы очень признателен за любую помощь.

Спасибо, Ro

1 Ответ

0 голосов
/ 09 ноября 2011

Да, я не прочитал ваш полный вопрос до того, как опубликовал свой ответ.

Я использовал приведенный ниже код для получения контента, и он работает без проблем.

    HttpResponse response = httpClient.execute(request);

    InputStream is = null;
    try {
        is = response.getEntity().getContent();
    } catch (IllegalStateException e) {
        e.printStackTrace();
        return null;
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }

    String line = "";
    StringBuilder total = new StringBuilder();
    BufferedReader rd = new BufferedReader(new InputStreamReader(is));

    try{
        while ((line = rd.readLine()) != null) { 
            total.append(line); 
        }
    } catch (IOException e){
        e.printStackTrace();
            return null
    }

    return queryResult = total.toString();
...