Android应用程序在将HTTP帖子发送到网址时挂起在模拟器上?

时间:2011-09-12 11:58:55

标签: android http-post

我已经在android中编写了一个代码来发送一个url的httppost请求,而我正在使用像“http://xxxx/myfolder/values.aspx”这样的本地IP地址将数据发布到本地服务器上为values.aspx创建一个虚拟目录,下面编写的代码工作正常,并轻松地将数据发送到localhost。当在httpost请求中指定真实URL时,应用程序挂起并且不回复任何错误或异常。厌倦了这个问题没有结果。请回复相关的POST。

=============================================== ==============================

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.xyz.com/myfolder/values.aspx");

    enter code here

try
 {
 List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
 nameValuePairs.add(new BasicNameValuePair("data",txtdis.getText().toString()
+txtsys.getText().toString()+txtpulse.getText().toString()+txttemp.getText().toString()));

 nameValuePairs.add(new BasicNameValuePair("reg", "asdfghjklpoiuytr")); 

  AbstractHttpEntity ent = new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8);       
  httppost.setEntity(ent);

  httppost.addHeader("data","vacant");
  httppost.addHeader("reg","vacant");
  HttpResponse response = httpclient.execute(httppost);

 if (ent != null) 
 { 
 Log.i("RESPONSE", response.getStatusLine().toString());
 }

 HttpEntity resEntity = response.getEntity();  
 if (resEntity != null) 
 {    
                                   Log.i("RESPONSE",EntityUtils.toString(resEntity));
 }


Intent browse = new Intent( Intent.ACTION_VIEW , Uri.parse( "http://192.168.2.50/BAN_app/getvalues1.aspx" ) );

startActivity( browse );

1 个答案:

答案 0 :(得分:2)

您在UI线程中执行此请求。这导致在请求时阻塞整个ui,如果请求的时间超过5秒,将触发App Not Responding (ANR)对话框。

始终在不同的线程中执行网络调用或工作量大的方法。 AsyncTask {{3}} class是一个很棒且易于使用的工具来完成这项工作。