Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HTTP请求-如何执行?_Java_Android_Sql_Http_Httprequest - Fatal编程技术网

Java HTTP请求-如何执行?

Java HTTP请求-如何执行?,java,android,sql,http,httprequest,Java,Android,Sql,Http,Httprequest,我试图写一个应用程序上传数据到一个在线数据库,但似乎应用程序崩溃了。有人能帮我吗?非常感谢 我认为问题主要发生在提交方法上。 我试着根据一些在线教程 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVie

我试图写一个应用程序上传数据到一个在线数据库,但似乎应用程序崩溃了。有人能帮我吗?非常感谢

我认为问题主要发生在提交方法上。 我试着根据一些在线教程

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

        //A1 spinner ..
        //A2 spinner ..
        //A3 spinner ..


        Button submit = (Button) findViewById(R.id.submit);
        submit.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                submitaction();

            }
        });

}//onCreate

private String submitaction(){

    String food = A1.getSelectedItem().toString();
    String drink = A2.getSelectedItem().toString();
    String stuid = A3.getSelectedItem().toString();

    final String url = "felixwongsite.com/android/include.php";

    HttpPost httpRequest = new HttpPost(url);
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("food", food));
    params.add(new BasicNameValuePair("drink", drink));
    params.add(new BasicNameValuePair("stuid", stuid));

    try{

        httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));

        HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest);

        if (httpResponse.getStatusLine().getStatusCode() == 200) {

            String strResult = EntityUtils.toString(httpResponse.getEntity());

            return strResult;
        }

    }catch (Exception e){

        e.printStackTrace();

    }  return null;

}//submitaction()

}//MainActivity
public类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//A1旋转器。。
//A2旋转器。。
//A3旋转器。。
按钮提交=(按钮)findViewById(R.id.submit);
submit.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
submitaction();
}
});
}//一次创建
私有字符串submitaction(){
字符串food=A1.getSelectedItem().toString();
字符串drink=A2.getSelectedItem().toString();
字符串stuid=A3.getSelectedItem().toString();
最终字符串url=“felixwongsite.com/android/include.php”;
HttpPost httpRequest=新的HttpPost(url);
List params=new ArrayList();
参数添加(新的BasicNameValuePair(“食品”,食品));
参数添加(新的BasicNameValuePair(“饮料”,饮料));
参数添加(新的BasicNameValuePair(“stuid”,stuid));
试一试{
setEntity(新的UrlEncodedFormEntity(params,HTTP.UTF_8));
HttpResponse HttpResponse=new DefaultHttpClient().execute(httpRequest);
如果(httpResponse.getStatusLine().getStatusCode()==200){
字符串strResult=EntityUtils.toString(httpResponse.getEntity());
返回strResult;
}
}捕获(例外e){
e、 printStackTrace();
}返回null;
}//提交()
}//主要活动

首先,不允许在主线程上执行网络操作

"To avoid creating an unresponsive UI, don't perform network operations on the UI thread. By default, Android 3.0 (API level 11) and higher requires you to perform network operations on a thread other than the main UI thread; if you don't, a NetworkOnMainThreadException is thrown."
看这里

解决方案

1.您可以在后台线程中实现asynctask进行网络调用

跟随导师是个好主意。

2.或者您可以使用第三方库,如改装 这里是网站


希望有帮助。

“我认为问题主要发生在submitaction方法中。”如果你的应用程序崩溃,你应该从logcat获得stacktrace,因此你应该a)自己检查stacktrace,添加日志您无法在主线程中执行网络操作。请使用
AsyncTask
执行网络任务。