Java Android无法发送post
我试图从android向服务器发送帖子,但在发送过程中崩溃了。 我看不出是否发生了任何错误,我不知道如何在android studio中监视http请求。 这是我的密码Java Android无法发送post,java,android,http,android-studio,post,Java,Android,Http,Android Studio,Post,我试图从android向服务器发送帖子,但在发送过程中崩溃了。 我看不出是否发生了任何错误,我不知道如何在android studio中监视http请求。 这是我的密码 try { String rtoken = FirebaseInstanceId.getInstance().getToken(); Log.v("tokken", rtoken); URL url = new URL("http:/
try {
String rtoken = FirebaseInstanceId.getInstance().getToken();
Log.v("tokken", rtoken);
URL url = new URL("http://my website.com/yyy");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15001);
conn.setConnectTimeout(15001);
conn.setRequestMethod("POST");
conn.setRequestProperty("pid",jo.getString("parent_id"));
conn.setRequestProperty("sid",jo.getString("parent_id"));
conn.setRequestProperty("token",rtoken);
conn.setDoOutput(true);
OutputStream outputPost = new BufferedOutputStream(conn.getOutputStream());
writeStream(outputPost);
outputPost.flush();
outputPost.close();
} catch (ProtocolException e1) {
e1.printStackTrace();
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
} catch (JSONException e1) {
e1.printStackTrace();
}
以及崩溃的堆栈痕迹
(JsonParser.java:105)是行
OutputStream outputPost=新的BufferedOutputStream(conn.getOutputStream())
我对这个问题已经厌烦了好几个小时了。任何帮助都将不胜感激,谢谢,不允许您通过主线程(即MainActivity或其他视图)连接到网络
相反,创建一个
AsyncTask
并从那里连接到web。不允许您在主线程(即MainActivity或其他视图)上连接到网络
相反,创建一个AsyncTask
并从那里连接到web。我建议您阅读有关android线程管理的内容。您试图在冻结UI的主线程上执行网络操作,这就是为什么会出现“NetworkOnMainThread”异常。
尝试启动一个新线程并在那里进行联网,如:
(new Thread(){
@Override public void run(){
try {
String rtoken = FirebaseInstanceId.getInstance().getToken();
Log.v("tokken", rtoken);
URL url = new URL("http://my website.com/yyy");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15001);
conn.setConnectTimeout(15001);
conn.setRequestMethod("POST");
conn.setRequestProperty("pid",jo.getString("parent_id"));
conn.setRequestProperty("sid",jo.getString("parent_id"));
conn.setRequestProperty("token",rtoken);
conn.setDoOutput(true);
OutputStream outputPost = new BufferedOutputStream(conn.getOutputStream());
writeStream(outputPost);
outputPost.flush();
outputPost.close();
} catch (ProtocolException e1) {
e1.printStackTrace();
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
} catch (JSONException e1) {
e1.printStackTrace();
}
}
}).start();
我建议您阅读有关android线程管理的内容。您试图在冻结UI的主线程上执行网络操作,这就是为什么会出现“NetworkOnMainThread”异常。
尝试启动一个新线程并在那里进行联网,如:
(new Thread(){
@Override public void run(){
try {
String rtoken = FirebaseInstanceId.getInstance().getToken();
Log.v("tokken", rtoken);
URL url = new URL("http://my website.com/yyy");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15001);
conn.setConnectTimeout(15001);
conn.setRequestMethod("POST");
conn.setRequestProperty("pid",jo.getString("parent_id"));
conn.setRequestProperty("sid",jo.getString("parent_id"));
conn.setRequestProperty("token",rtoken);
conn.setDoOutput(true);
OutputStream outputPost = new BufferedOutputStream(conn.getOutputStream());
writeStream(outputPost);
outputPost.flush();
outputPost.close();
} catch (ProtocolException e1) {
e1.printStackTrace();
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
} catch (JSONException e1) {
e1.printStackTrace();
}
}
}).start();
请检查是否有互联网连接权限。同时检查下面的@ManuToMatic answer请检查是否有互联网连接权限。同时检查下面的@ManuToMatic answer谢谢先生,我今天学到了一件新东西:)我对Java和Android非常陌生谢谢先生,今天我学到了一个新东西:)我对Java和android是如此的陌生