Android 尝试启动 HttpURLConnection 函数后应用崩溃
Android app crash after trying to launch a HttpURLConnection function
我正在尝试创建到 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中,什么也没有显示。刚启动功能就崩溃了
您应该在 AsyncTask
中执行网络代码。 Android 不允许在主线程中联网。
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) {}
}
执行
new LongOperation().execute();
我正在尝试创建到 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中,什么也没有显示。刚启动功能就崩溃了
您应该在 AsyncTask
中执行网络代码。 Android 不允许在主线程中联网。
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) {}
}
执行
new LongOperation().execute();