2011-09-16 21 views
0

下面的代码在Android模拟器中工作,但不在真实设备中。在仿真器上,inputstream.available()在设备上返回-1,它返回一个以千为单位的值int。任何帮助?Android中的数据连接:InputStream的`available`返回不同的值

代码:

try { 
       URL url = new URL("http://www.google.com"); 
       Log.d(TAG,"Set URL"); 
       urlConnection = (HttpURLConnection) url.openConnection(); 
       //urlConnection.connect(); 
       Log.d(TAG,"Open connection"); 
       InputStream in = new BufferedInputStream(urlConnection.getInputStream()); 
       Log.d(TAG,"get input"); 
       str="Connect time out::"+urlConnection.getConnectTimeout()+ 
        "\nContent length:"+urlConnection.getContentLength()+ 
        "\nRead time out::"+ urlConnection.getReadTimeout()+ 
        "\nResponse messgae::"+urlConnection.getResponseMessage()+ 
        "\nAvailable bytes::::"+in.available(); 
       Log.d(TAG,""+str); 
       read(in); 

      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       urlConnection.disconnect(); 
      } 

回答

2

Genereally你应该使用HttpClient的Android提供,Java的URL类是不够健壮。

,如:

HttpClient client = new DefaultHttpClient(); 
    HttpGet request = new HttpGet(); 
    request.setURI(new URI("http://w3mentor.com/")); 
    HttpResponse response = client.execute(request); 
    in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));