我想使用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吗?