解决方案 »

  1.   

    大神求代码,求具体解决方案。到底是什么原因,造成的这个异常?
    我看网上都是这样写的。你百度下,异步加载网络,好多demo的,,,
      

  2.   

    大神求代码,求具体解决方案。到底是什么原因,造成的这个异常?
    我看网上都是这样写的。你百度下,异步加载网络,好多demo的,,,
    我只是请求一个页面,并没有提交数据,和异步没关系吧。
    我只想知道urlConnection.getInputStream()为什么报错
      

  3.   

    访问网络都要异步,请看官方api
      

  4.   

    有关系,android里请求网络不能在主线程里操作,必须在子线程(也就是异步),楼上说的没错,
    new Thread() {
    public void run() {
    // 把你的代码都写在这里
    }
    }.start();
      

  5.   


    同志们,他报的是空指针异常,而不是network on UI thread异常,在android 4.0以下是可以在UI中进行网络操作的,但毕竟如果耗时的话会引发ANR ,楼主LOG贴的不全,没看出是你代码的哪一行报空指针,看样子InputStream in = new BufferedInputStream(urlConnection.getInputStream()); 这句话是不可能报空指针的啊,除非你在其他地方有线程把urlConnection置空了。
      

  6.   


    同志们,他报的是空指针异常,而不是network on UI thread异常,在android 4.0以下是可以在UI中进行网络操作的,但毕竟如果耗时的话会引发ANR ,楼主LOG贴的不全,没看出是你代码的哪一行报空指针,看样子InputStream in = new BufferedInputStream(urlConnection.getInputStream()); 这句话是不可能报空指针的啊,除非你在其他地方有线程把urlConnection置空了。public class WebActivity extends Activity{


    protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_wikipedia);

    HttpURLConnection urlConnection = null;  
    try {  
        URL url = new URL("http://www.baidu.com/");  
        urlConnection = (HttpURLConnection)url.openConnection(); 
            urlConnection.setDoInput(true);// 表示从服务器获取数据  
            urlConnection.setDoOutput(true);// 表示向服务器写数据  
            urlConnection.setConnectTimeout(3000);
            InputStream in = new BufferedInputStream(urlConnection.getInputStream());  
        String result = readInStream(in);  
    //     handleResult(result);  
    } catch (MalformedURLException e) {  
        e.printStackTrace();  
    } catch (IOException e) {  
        e.printStackTrace();  
    } finally {  
        urlConnection.disconnect();  
    }
    }
    private String readInStream(InputStream in){  
        Scanner scanner = new Scanner(in).useDelimiter("\\A");  
        return scanner.hasNext() ? scanner.next() : "";  

    }没有将urlConnection置空,这是我activity全部的代码
      

  7.   

    private void test() {
    new Thread() { @Override
    public void run() {
    HttpURLConnection urlConnection = null;
    try {
    URL url = new URL("http://www.baidu.com/");
    urlConnection = (HttpURLConnection) url.openConnection();
    urlConnection.setDoInput(true);// 表示从服务器获取数据
    urlConnection.setDoOutput(true);// 表示向服务器写数据
    urlConnection.setConnectTimeout(3000);
    InputStream in = new BufferedInputStream(
    urlConnection.getInputStream());
    String result = readInStream(in);
    Log.e("test", result);
    // handleResult(result);
    } catch (MalformedURLException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    urlConnection.disconnect();
    }
    } }.start();
    } private String readInStream(InputStream in) {
    Scanner scanner = new Scanner(in).useDelimiter("\\A");
    return scanner.hasNext() ? scanner.next() : "";
    }
    经过测试,这样是没有问题的
    在xml文件中添加
       <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />