2012-05-05 51 views
2

我正在通過一個url發送信息到一個php文件。當我在瀏覽器中輸入url時,會顯示正確的信息,但是我沒有通過InputStreamReader獲取這些信息。Android使用InputStreamReader無法從Url返回信息

這是我的代碼。

try { 
      URL url = new URL("http://example/example.php?userImage=" 
     + URLEncoder.encode(userImageString, "UTF-8") + "&userHeight=" 
     + URLEncoder.encode(userHeight,"UTF-8")); 
      Log.d("url", "" + url); 
      Scanner in = new Scanner(new InputStreamReader(url.openStream())) 
      .useDelimiter("\n"); 

      Log.d("hasnext?", "" + in.hasNext()); 
     while (in.hasNext()) 
     { 
      Log.d("sent", in.next()); 
     } 
     in.close(); 
    } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
} 

HasNext返回false,它應該返回true。有什麼建議麼?

我應該注意userImageString是一個Base64編碼的字符串。

+0

嘗試在更換'掃描儀= new Scanner(new InputStreamReader(url.openStream())) .useDelimiter(「\ n」);'帶'Scanner in = new Scanner(url.openStream());'。 –

+0

仍然返回false。 –

回答

1

1)您是否有權訪問互聯網?

<uses-permission android:name="android.permission.INTERNET" /> 

2)我想你可以用這個的answere解決您的問題: Make an HTTP request with android

3)這是一個工作的HTTP請求返回的響應:

public String request(String fUrl){ 
    String page = ""; 
    try 
    { 
     HttpClient hc = new DefaultHttpClient(); 
     HttpPost post = new HttpPost(fUrl); 
     HttpResponse response = hc.execute(post); 

     if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) 
     { 
      page = EntityUtils.toString(response.getEntity()); 
     } 
    } catch(IOException e) { 
     e.printStackTrace(); 
     System.out.println("Exception Thrown"); 
    } 
    return page; 
} 
+0

是的,我有一個互聯網連接,我在我的應用程序的不同部分完成了類似的網址調用,這就是爲什麼我不明白爲什麼這只是使用瀏覽器工作。 –

+0

使用HttpClient對象要容易得多,所以我推薦使用它來代替InputStreamReader。 – Wezelkrozum

+0

好吧,我曾嘗試過使用它們,有沒有一種簡單的方法可以從HTTPClient的結果中讀取? –