记录一下自己在项目中需要用到的Http post请求将一个json格式的字符串传到第三方接口中,该接口需获取到传入的字符串,并进行解析。
自己修改后的工具类代码如下:
package com.bosssoft.handler;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import mons.httpclient.HttpClient;
import mons.httpclient.methods.InputStreamRequestEntity;
import mons.httpclient.methods.PostMethod;
import mons.httpclient.methods.RequestEntity;
public class HttpRequestUtil {
/**
* 向指定 URL 发送POST方法的请求
*
* @param url
* 发送请求的 URL
* @param param
* 请求参数,请求参数应该是Json格式字符串的形式。
* @return 所代表远程资源的响应结果
*/
public static String sendPost(String url, String jsonData) {
PrintWriter out = null;
BufferedReader in = null;
String result = "";
try {
HttpClient client = new HttpClient(); // 客户端实例化
PostMethod postMethod = new PostMethod(url); // 请求方法post,可以将请求路径传入构造参数中
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); // 将参数放入请求体
int i = client.executeMethod(postMethod); // 执行方法
System.out.println("请求状态"+i);
// 这里因该有判断的,根据请求状态判断请求是否成功,然后根据第三方接口返回的数据格式,解析出我们需要的数据
byte[] responseBody = postMethod.getResponseBody(); // 得到相应数据
String s = new String(responseBody);
System.out.println(s);
} catch (Exception e) {
System.out.println("发送 POST 请求出现异常!" + e);
e.printStackTrace();
}
// 使用finally块来关闭输出流、输入流
finally {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return result;
}
}
网上的工具类一般都是可以成功发送值,而我在写程序时,最大的坑就是如何在接口中获取到值,接口获取值的方法如下,记录一下,防止下次踩坑。
image.png
红色部分的注解一定要加!二者缺一不可
如果觉得《http post java工具类_java实现Http post(参数json格式) get 请求的HttpUtil工具类》对你有帮助,请点赞、收藏,并留下你的观点哦!