首页 新闻 会员 周边

我做post发送东西的时候报NetworkOnMainThreadException为什么?

0
[已解决问题] 解决于 2012-08-27 09:33

如题,我是希望发送一个xml文件到服务器,但是运行之后发现报错,想知道是怎么一回事,这个报错要怎么解决?错误信息如下:

08-11 22:18:32.180: W/System.err(22906): android.os.NetworkOnMainThreadException
08-11 22:18:32.190: W/System.err(22906): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1077)
08-11 22:18:32.190: W/System.err(22906): at java.net.InetAddress.lookupHostByName(InetAddress.java:477)
08-11 22:18:32.190: W/System.err(22906): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:277)
08-11 22:18:32.190: W/System.err(22906): at java.net.InetAddress.getAllByName(InetAddress.java:249)
08-11 22:18:32.190: W/System.err(22906): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:136)
08-11 22:18:32.190: W/System.err(22906): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
08-11 22:18:32.190: W/System.err(22906): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
08-11 22:18:32.190: W/System.err(22906): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
08-11 22:18:32.190: W/System.err(22906): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
08-11 22:18:32.190: W/System.err(22906): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
08-11 22:18:32.190: W/System.err(22906): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)

 

另外附上我的代码:

 1 private void post()
 2     {
 3         String urlString = "http://www.gzconcern.cn/kangxin/post_pinggu";
 4         String srcPath = Environment.getExternalStorageDirectory().getPath()
 5                 + "/sys/PingGu/" + MOKUAI + ".xml";
 6         URI url = null;
 7         String end = "\r\n";
 8         String twoHyphens = "--";
 9         String boundary = "******";
10         try
11         {
12             url = new URI(urlString);
13             HttpClient httpclient = new DefaultHttpClient();
14             HttpPost request = new HttpPost(url);
15             StringEntity s = new StringEntity(du(srcPath), HTTP.UTF_8);
16             s.setContentType("text/xml charset=utf-8");
17             request.setEntity(s);
18             HttpResponse re=httpclient.execute(request);
19             String result = EntityUtils.toString(re.getEntity(), HTTP.UTF_8);
20             Log.i("result", result);
21      }
22         catch (Exception e)
23         {
24             e.printStackTrace();
25         }
26 }

 

 

毛豆先生^ω^的主页 毛豆先生^ω^ | 菜鸟二级 | 园豆:207
提问于:2012-08-11 22:53
< >
分享
最佳答案
0

经过研究所得,这是因为这样的长耗时工作不能在ui线程下处理,而我把这个写在了ui线程下所以报错.于是我进行了异步操作,问题得到了解决

毛豆先生^ω^ | 菜鸟二级 |园豆:207 | 2012-08-27 09:33
其他回答(2)
0

不是web的客户端是android

chenping2008 | 园豆:9836 (大侠五级) | 2012-08-12 16:42

代表什么呢?

支持(0) 反对(0) 毛豆先生^ω^ | 园豆:207 (菜鸟二级) | 2012-08-12 16:44

@琴弦欲奏: 你应该是通过android的手机提交xml到服务器上得吧?

支持(0) 反对(0) chenping2008 | 园豆:9836 (大侠五级) | 2012-08-12 16:50
0

可以推荐使用apathe的开源项目 common fileupload 这个对于在Android上传文件,字符串都很好用的

(り猪小宝 | 园豆:204 (菜鸟二级) | 2012-08-15 16:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册