android调用webservice报错conn.getOutputStream().write(content.getBytes());//出错了 抛出networkonmainthreadexc

NetworkOnMainThreadException
提示你不要在主线程中访问网络。

把要访问的网络单独放在一个线程中:

new Thread(){
    @Override
    public void run()
    {
        //把你上面那段网络访问的代码放在这里     
    }

}.start();


如果是临时测试不是最终发布版本可以通过去掉strictMode来解决
办法是在oncreate中使用如下代码

Java code
?
1
2
3
4
5
6
7
public  void  onCreate(Bundle savedInstanceState) {
     super .onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
  
     StrictMode.ThreadPolicy policy =  new  StrictMode.ThreadPolicy.Builder().permitAll().build();
     StrictMode.setThreadPolicy(policy);  
}


最终的解决办法还是通过线程来请求网络数据,给你一个使用asyncTask的例子


Java code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public  void  downloadHtml(View view)  throws  IOException{
DownloadHtmlTask task =  new  DownloadHtmlTask();
task.execute( new  String[] {  "http://www.bcoder.com"  });
}
  
private  class  DownloadHtmlTask  extends  AsyncTask<String, Void, String> {
     @Override
     protected  String doInBackground(String... urls) {
         String response =  "" ;
         InputStream in =  null ;
         for  (String url : urls) {
             DefaultHttpClient client =  new  DefaultHttpClient();
             HttpGet httpGet =  new  HttpGet(url);
             try  {
                 URL urlget =  new  URL(url);
                 HttpURLConnection conn = (HttpURLConnection)urlget.openConnection();
  
                 conn.connect();
  
                 in = (conn.getInputStream());
                 BufferedReader buffer =  new  BufferedReader( new  InputStreamReader(in));
                 String s =  "" ;
                 while  ((s = buffer.readLine()) !=  null ) {
                     response += s;
                 }                       
  
             catch  (Exception e) {
                 e.printStackTrace();
             }
         }
         return  response;
     }
  
     @Override
     protected  void  onPostExecute(String result) {
         TextView textView =  (TextView)findViewById(R.id.textView1);;
         textView.setText(result);
     }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值