实际开发中,可能需要发送http请求到第三方服务获取数据,于是就有以下应用:
依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
假设我需要在我的业务代码中调用该地址:
url:http://xx.xx:xxxx/user/count
请求方法:post
内容类型:application/json
请求参数:id, username
返回参数:code 响应结果 int类型
msg 响应消息 string
data 响应数据 string(json字符串)
请求头:U-Token 校对权限的token
java 发送请求代码(封装成一个方法,业务代码中调用该方法即可):
private String sendPost(String url, String id, String username, String token) throws IOException {
// 用于保存第三方公司定义的json格式的返回结果数据
String result = "";
// 封装请求参数并转JSON
Map<String, String> params = new HashedMap<>();
params.put("id", id);
params.put("username", username);
String jsonMap = JSON.toJSONString(params);
// 创建httpclient对象
CloseableHttpClient client = HttpClients.createDefault();
// 创建post方式请求对象
HttpPost httpPost = new HttpPost(url);
// 头部携带的token
if (token != null && !token.equals("")) {
// 设置token,其中U-Token 是第三方(接口作者)定义的token名
httpPost.setHeader("U-Token", token);
}
// 设置参数到请求对象中
StringEntity entity = new StringEntity(jsonMap, "UTF-8");
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
httpPost.setEntity(entity);
// 执行请求操作,并拿到结果(同步阻塞)
CloseableHttpResponse response = client.execute(httpPost);
if (response.getStatusLine().getStatusCode() == 200) {
// 网络连接正常,将结果赋给result对象,此时result 对象保存的就是第三方公司定义的json格式的返回结果数据
result = EntityUtils.toString(response.getEntity(), "UTF-8");
}
// 释放链接
response.close();
return result;
}
模拟业务代码调用:
public void test() throws IOException {
String result = sendPost("http://xx.xx:xxxx/user/count", "1", "张三");
// 非空判断
if (!result.equals("")) {
// 将json字符串转对象,并获取第三方的响应数据
JSONObject jsonObject = JSON.parseObject(result);
Integer code = jsonObject.getInteger("code");
String msg = jsonObject.getString("msg");
String data = jsonObject.getString("data");
}
}
至此,成功完成调用。文章来源:https://www.toymoban.com/news/detail-531495.html
拓展:get请求文章来源地址https://www.toymoban.com/news/detail-531495.html
public String sendGet(String url) throws IOException {
String result = "";
// 创建httpclient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
// 创建get方式请求对象
HttpGet httpGet = new HttpGet(url);
httpGet.addHeader("Content-type", "application/json");
// 通过请求对象获取响应对象
CloseableHttpResponse response = httpClient.execute(httpGet);
// 获取结果实体
// 判断网络连接状态码是否正常(0--200都数正常)
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
result = EntityUtils.toString(response.getEntity(), "utf-8");
}
// 释放链接
response.close();
return result;
}
到了这里,关于java业务代码发送http请求(Post方式:请求参数为JSON格式;Get方式)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!