java中post推送json格式字符串
最近项目中遇到post推送json格式字符串,之前写过推送json数据,调用失败,才发现是直接推送字符串,只不过字符串是json的格式。
在postman中调用如下:
Java中代码如下:
/** * 发送POST方法的请求 * @param url 发送请求的 URL * @param jsonData 请求参数是Json格式字符串 * @return 响应结果 */ public static String sendPostJsonStr(String url, String jsonData) { PrintWriter out = null; BufferedReader in = null; String result = ""; try { HttpClient client = new HttpClient(); PostMethod postMethod = new PostMethod(url); postMethod.addRequestHeader("Content-type", "application/json; charset=utf-8"); byte[] requestBytes = jsonData.getBytes("utf-8"); // 将参数转为二进制流 InputStream inputStream = new ByteArrayInputStream(requestBytes, 0, requestBytes.length); // 请求体 RequestEntity requestEntity = new InputStreamRequestEntity(inputStream, requestBytes.length, "application/json; charset=utf-8"); postMethod.setRequestEntity(requestEntity); // 将参数放入请求体 client.executeMethod(postMethod); inputStream = postMethod.getResponseBodyAsStream(); BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); StringBuffer stringBuffer = new StringBuffer(); String str= ""; while((str = br.readLine()) != null){ stringBuffer.append(str); } result=stringBuffer.toString(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (out != null) { out.close(); } if (in != null) { in.close(); } } catch (IOException ex) { ex.printStackTrace(); } } return result; }
引用的jar包:commons-httpclient-3.1.jar、commons-logging-1.2.jar、commons-codec-1.9.jar