Java Android无法发送post

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:/

我试图从android向服务器发送帖子,但在发送过程中崩溃了。 我看不出是否发生了任何错误,我不知道如何在android studio中监视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是如此的陌生