2012-05-05 14 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的结果中读取? –