尝试启动HttpURLConnection函数后Android应用程序崩溃

时间:2015-12-15 10:51:07

标签: android httpurlconnection

我正在尝试创建与servlet的连接并发送Json文件,这是应用程序崩溃的代码部分:

 findViewById(R.id.main_login_button).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finalJson=createJfile();
            try {
                HTTPConnection(finalJson);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    });

该功能如下:

public void HTTPConnection(String Json) throws IOException{
    URL url;
    url = new URL("http://192.168.0.136:8080/ProgettoProva/AndroidApp");

    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("POST");
    conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
    conn.setRequestProperty("Accept", "text/json");
    OutputStreamWriter writer =new OutputStreamWriter(conn.getOutputStream());
    writer.write(Json);
    writer.close();
    conn.disconnect();

}

在LogCat中,没有显示任何内容。该应用程序在启动该功能时崩溃了。

1 个答案:

答案 0 :(得分:1)

您应该在f_name中执行网络代码。 Android不允许在主线程中使用网络。

AsyncTask

执行

private class MyAsyncTask extends AsyncTask<Void, Void, String> {

    @Override
    protected String doInBackground(Void... params) {
        //Do network code here
    }

    @Override
    protected void onPostExecute(String result) {

    }

    @Override
    protected void onPreExecute() {}

    @Override
    protected void onProgressUpdate(Void... values) {}
}