2011-11-08 55 views
0

我目前正在開發一個Android應用程序,我正嘗試連接到Flickr並從中抓取照片。但是,我的HttpGet調用完全失敗。這裏是我的代碼:Android - 連接到Flickr API並抓取Java中的照片

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(); 
     } 
    } 

我的臨時存儲字符串「http://api.flickr.com/services/rest/?method=flickr.photos.search & API_KEY = 467ae9bf5926d10c684d4f47d7da6434 &標籤=新%20york & per_page = 5 & page1「

當我在瀏覽器中進行調用(它返回我期待的xml文件)時,調用可以正常工作。但是,當我從我的android應用程序進行調用時,它不起作用。我在我的android清單文件中添加了Internet權限行。

我真的很感激任何幫助。

感謝, 滾裝

+0

你應該把你的API密鑰帶出這個問題。只是一個fyi。 – JoeLallouz

回答

0

燁沒有看過完整的問題之前,我貼我的答案。

我已經使用下面的代碼來檢索內容,它沒有問題。

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(); 
+0

嗨,究竟是什麼是'請求'參數傳入httpClient.execute(...)? – roro

+0

從不介意。非常感謝。代碼的那部分工作完美。 – roro