当前位置:   article > 正文

java业务代码发送http请求(Post方式:请求参数为JSON格式;Get方式)_java post请求带参数

java post请求带参数

实际开发中,可能需要发送http请求到第三方服务获取数据,于是就有以下应用:

依赖:

  1. <dependency>
  2. <groupId>com.alibaba</groupId>
  3. <artifactId>fastjson</artifactId>
  4. <version>1.2.78</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.httpcomponents</groupId>
  8. <artifactId>httpclient</artifactId>
  9. <version>4.5.13</version>
  10. </dependency>

假设我需要在我的业务代码中调用该地址:

url:http://xx.xx:xxxx/user/count

请求方法:post

内容类型:application/json

请求参数:id, username

返回参数:code 响应结果 int类型

                  msg 响应消息 string

                  data 响应数据 string(json字符串)

请求头:U-Token 校对权限的token

java 发送请求代码(封装成一个方法,业务代码中调用该方法即可):

  1. private String sendPost(String url, String id, String username, String token) throws IOException {
  2. // 用于保存第三方公司定义的json格式的返回结果数据
  3. String result = "";
  4. // 封装请求参数并转JSON
  5. Map<String, String> params = new HashedMap<>();
  6. params.put("id", id);
  7. params.put("username", username);
  8. String jsonMap = JSON.toJSONString(params);
  9. // 创建httpclient对象
  10. CloseableHttpClient client = HttpClients.createDefault();
  11. // 创建post方式请求对象
  12. HttpPost httpPost = new HttpPost(url);
  13. // 头部携带的token
  14. if (token != null && !token.equals("")) {
  15. // 设置token,其中U-Token 是第三方(接口作者)定义的token名
  16. httpPost.setHeader("U-Token", token);
  17. }
  18. // 设置参数到请求对象中
  19. StringEntity entity = new StringEntity(jsonMap, "UTF-8");
  20. entity.setContentEncoding("UTF-8");
  21. entity.setContentType("application/json");
  22. httpPost.setEntity(entity);
  23. // 执行请求操作,并拿到结果(同步阻塞)
  24. CloseableHttpResponse response = client.execute(httpPost);
  25. if (response.getStatusLine().getStatusCode() == 200) {
  26. // 网络连接正常,将结果赋给result对象,此时result 对象保存的就是第三方公司定义的json格式的返回结果数据
  27. result = EntityUtils.toString(response.getEntity(), "UTF-8");
  28. }
  29. // 释放链接
  30. response.close();
  31. return result;
  32. }

模拟业务代码调用:

  1. public void test() throws IOException {
  2. String result = sendPost("http://xx.xx:xxxx/user/count", "1", "张三");
  3. // 非空判断
  4. if (!result.equals("")) {
  5. // 将json字符串转对象,并获取第三方的响应数据
  6. JSONObject jsonObject = JSON.parseObject(result);
  7. Integer code = jsonObject.getInteger("code");
  8. String msg = jsonObject.getString("msg");
  9. String data = jsonObject.getString("data");
  10. }
  11. }

至此,成功完成调用。

拓展:get请求

  1. public String sendGet(String url) throws IOException {
  2. String result = "";
  3. // 创建httpclient对象
  4. CloseableHttpClient httpClient = HttpClients.createDefault();
  5. // 创建get方式请求对象
  6. HttpGet httpGet = new HttpGet(url);
  7. httpGet.addHeader("Content-type", "application/json");
  8. // 通过请求对象获取响应对象
  9. CloseableHttpResponse response = httpClient.execute(httpGet);
  10. // 获取结果实体
  11. // 判断网络连接状态码是否正常(0--200都数正常)
  12. if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
  13. result = EntityUtils.toString(response.getEntity(), "utf-8");
  14. }
  15. // 释放链接
  16. response.close();
  17. return result;
  18. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/302853
推荐阅读
相关标签
  

闽ICP备14008679号