Java Android 4.2上的HttpClient.execute(HttpPost)错误

Java Android 4.2上的HttpClient.execute(HttpPost)错误,java,android,Java,Android,我跟随这个网站尝试使用android应用程序连接PHP服务器来获取消息 GetServerMessage.java import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.cl

我跟随这个网站尝试使用android应用程序连接PHP服务器来获取消息

GetServerMessage.java

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
public class GetServerMessage {

    public String stringQuery(String url){
        try
        {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost method = new HttpPost(url);
            HttpResponse response = httpclient.execute(method);
            HttpEntity entity = response.getEntity();
            if(entity != null){
                return EntityUtils.toString(entity);
            }
            else{
                return "No string.";
            }
         }
         catch(Exception e){
             return "Network problem";
         }
    }
}
GetPhpServerMessageDemoActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class GetPhpServerMessageDemoActivity extends Activity {
    /** Called when the activity is first created. */
    private TextView textView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        textView = (TextView)findViewById(R.id.text_view);
        GetServerMessage message = new GetServerMessage();
        String msg = message.stringQuery("http://192.168.1.88/androidtesting.php");
        textView.setText("Server message is "+msg);
    }

}
我试着从那个网站下载Android应用程序项目并在我的手机上运行,这是成功的。
但是当我启动一个新项目(Minimuim-required-SDK:API8,Target-SDK:API17,Compile-with:API17)并复制这两个java代码时。我已经添加了权限
android.permission.INTERNET
,所以我不知道问题出在哪里,我只知道当运行
HttpResponse response=httpclient.execute(方法)时
出现错误并返回字符串“Network problem”。

正如Sotirios Delimanolis所说,您需要在一个单独的
线程上运行长时间运行的任务,如网络调用。可能就是这样。

您正在ui线程上运行与网络相关的操作。您将获得
networkonmainthreadeception
post蜂巢

使用
线程
异步任务

调用异步任务

   new TheTask().execute("http://192.168.1.88/androidtesting.php");
异步任务


是不是
NetworkOnMain
class TheTask extends AsyncTask<String,String,String>
    {

@Override
protected String onPostExecute(Void result) {
    // TODO Auto-generated method stub
    super.onPostExecute(result);
    // update textview here
    textView.setText("Server message is "+result);
}

@Override
protected void onPreExecute() {
    // TODO Auto-generated method stub
    super.onPreExecute();
}

@Override
protected String doInBackground(String... params) {
     try
        {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost method = new HttpPost(params[0]);
            HttpResponse response = httpclient.execute(method);
            HttpEntity entity = response.getEntity();
            if(entity != null){
                return EntityUtils.toString(entity);
            }
            else{
                return "No string.";
            }
         }
         catch(Exception e){
             return "Network problem";
         }

}
}