Java 使用HttpURLConnection和AsyncTask发送POST JSON数据

Java 使用HttpURLConnection和AsyncTask发送POST JSON数据,java,android,json,android-asynctask,httpurlconnection,Java,Android,Json,Android Asynctask,Httpurlconnection,我试图发送一些JSON数据(如果有问题,它可能是一个普通字符串),但它根本不起作用。 当我添加getResponseCode时,它向服务器发送带有空正文的POST,但设置了标题(Content Type-application/json)。我尝试了很多不同的方法,但总是有空的身体。有人能看看吗?我觉得我错过了一些重要的事情 //when button is tapped: final String url = "http://postcatcher.in/catchers/"; new Asyn

我试图发送一些JSON数据(如果有问题,它可能是一个普通字符串),但它根本不起作用。 当我添加getResponseCode时,它向服务器发送带有空正文的POST,但设置了标题(Content Type-application/json)。我尝试了很多不同的方法,但总是有空的身体。有人能看看吗?我觉得我错过了一些重要的事情

//when button is tapped:
final String url = "http://postcatcher.in/catchers/";
new AsyncHttpTask().execute(url);


public class AsyncHttpTask extends AsyncTask<String, Void, Integer> {

    @Override
    protected Integer doInBackground(String... strings) {
        try {
            URL url = new URL(strings[0]);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setDoOutput(true);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type","application/json");
            // conn.getResponseCode

            JSONObject jsonParam = new JSONObject();
            jsonParam.put("name", "Andrew");
            jsonParam.put("code", "5412274");

            OutputStreamWriter os = new OutputStreamWriter(conn.getOutputStream());
            os.write(jsonParam.toString());
            os.flush();

        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }


}
//点击按钮时:
最终字符串url=”http://postcatcher.in/catchers/";
新建AsyncHttpTask().execute(url);
公共类AsyncHttpTask扩展了AsyncTask{
@凌驾
受保护的整数doInBackground(字符串…字符串){
试一试{
URL=新URL(字符串[0]);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
连接设置输出(真);
conn.setRequestMethod(“POST”);
conn.setRequestProperty(“内容类型”、“应用程序/json”);
//连接getResponseCode
JSONObject jsonParam=新的JSONObject();
jsonParam.put(“名称”、“安德鲁”);
jsonParam.put(“代码”,“5412274”);
OutputStreamWriter os=新的OutputStreamWriter(conn.getOutputStream());
write(jsonParam.toString());
os.flush();
}捕获(例外e){
e、 printStackTrace();
}
返回null;
}
}
问题是,当我使用conn.getResponse代码时,我确信有与服务器的连接,但主体是空的。
当我删除它时,POST消息根本没有发送(似乎不起作用)

在该位置,您还没有发送任何内容,因此您无法期望得到响应。那你就有例外了。记录并查看日志。如果你想知道回复,你应该在发送完所有信息后再发送。所以在os.flush()之后。但你没有看到回应。网络服务器会发回一些东西,不是吗?您不是在从conn.getInputStream()读取它。阅读它,否则你永远不会知道捕手回答了什么。

当我添加getResponseCode时。请把它放在代码的正确位置。你可以评论一下。