在Android上使用HttpUrlConnection通过POST接收JSON

时间:2018-03-08 23:38:44

标签: android json post httpurlconnection

我想使用POST方法向REST服务发送和接收JSON。 我的REST服务设置为如果我使用POST方法发送JSON,它将返回一个JSON。但我无法访问收到的JSON,因为getInputStream()方法没有返回数据。 这是我用来进行POST调用的代码

public String postCall(String reqUrl,JSONObject jsonObject){
    String response;
    try{
        URL url = new URL(reqUrl);
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();
        conn.setDoOutput(true);
        conn.setDoInput(true);
        conn.setRequestProperty("Accept", "application/json; charset=utf-8");
        conn.setRequestProperty("Content-Type", "application/json; charset=utf-8");
        conn.setRequestMethod("POST");
        String json = jsonObject.toString();
        DataOutputStream out = new DataOutputStream(conn.getOutputStream());
        out.writeBytes(json);
        out.flush();
        out.close();
        int HttpResult = conn.getResponseCode();
        response = convertStreamToString(conn.getInputStream());
        return response;
    }
    catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

将流转换为字符串的方法如下

private String convertStreamToString(InputStream is) {
    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    StringBuilder sb = new StringBuilder();

    String line;
    try {
        while ((line = reader.readLine()) != null) {
            sb.append(line).append('\n');
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return sb.toString();
}

我已使用Chrome扩展程序测试了REST服务,并且正在成功接收JSON。 有什么方法可以通过POST方法接收JSON吗?

0 个答案:

没有答案