HttpClient进行服务器传递信息,HttpUtil工具类

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

使用httpclient实现两个服务之间传递信息
案例:
A服务传入参数调用B服务的登入接口


一、引入Maven依赖

        <!-- https://mvnrepository.com/artifact/com.seepine/httpclient -->
        <dependency>
            <groupId>com.seepine</groupId>
            <artifactId>httpclient</artifactId>
            <version>1.0.0</version>
        </dependency>

二、使用步骤

1.服务器A控制层

代码如下(示例):


@RestController
@Slf4j
@RequestMapping("/file")
public class CommonController {

    @PostMapping("/test")
    public  String postTest(@RequestBody User user, HttpServletRequest request){
 //创建map集合 调用B服务传入的参数
       Map<String,String > map=new HashMap<>();
       //将传入的对象转换成Json形式的数据
       String userJson = JSON.toJSONString(user);
       //传入map集合
        map.put("res", userJson);
        //httpUtil会根据  url中的header 自动判断请求方式等,确保请求方式一致
        String result = HttpUtil.sendPost("http://localhost:8082/user//login", map);
        return  result;

    }

注意: 最好先将数据转换成Json形式的数据在进行传递否则服务器B接受后会出现BUG没办法转换成对象的对象或者集合。

2.服务器B控制层

@Controller
@Slf4j
@RequestMapping("/user")
public class User1Controller {
    @Autowired
    UserService userService;
    /**
     * 用户登入
     * @param
     * @return
     */
    @RequestMapping(value = "/login", method = RequestMethod.POST)
    @ResponseBody
    public User login(@RequestBody String res) throws UnsupportedEncodingException {
        //服务A传过来的参数,有可能是乱码,需要先设置一下编码格式
        String decode = URLDecoder.decode(res, "UTF-8");
        log.info("账户:{}",decode);
        //将Map中 的Key截取 只留下value的值
         String result = decode.substring(4);
         //将value中的jason数据转换成java对象
        User user = JSON.parseObject(reslut, User.class);
        return user;
        
    }

注意:通过httpclient 进行服务器互相调用的时候,被调用的服务器接受数据时,只能是String 类型
接受后在进行 JSON和JAVA的转换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
httputil是一个常用的网络请求工具类,用于发送HTTP请求并获取响应。在使用httputil工具类发送请求时,可以通过设置请求的cookie来实现身份验证、会话管理等功能。 要设置cookie,首先需要创建一个HttpClient对象。HttpClient用于发送请求并获取响应。在创建HttpClient对象时,可以通过HttpClientBuilder类来设置一些自定义的配置,包括cookie的相关设置。 1. 创建HttpClient对象: ```java HttpClient httpClient = HttpClientBuilder.create().build(); ``` 2. 创建HttpPost或HttpGet对象,设置请求URL和其他相关参数。 3. 设置cookie: ```java CookieStore cookieStore = new BasicCookieStore(); BasicClientCookie cookie = new BasicClientCookie("cookie_name", "cookie_value"); cookie.setDomain("example.com"); cookie.setPath("/"); cookieStore.addCookie(cookie); HttpContext httpContext = new BasicHttpContext(); httpContext.setAttribute(HttpClientContext.COOKIE_STORE, cookieStore); ``` 这里创建了一个CookieStore对象,用于存储cookie。然后创建一个BasicClientCookie对象,设置cookie的名称和值。可以通过setDomain()和setPath()方法设置cookie的域和路径。将cookie添加到cookieStore中。 然后创建一个HttpContext对象,并将cookieStore设置为其属性。将HttpContext对象传递给HttpClient对象的execute()方法,执行请求。 4. 发送请求: ```java HttpResponse response = httpClient.execute(httpPost, httpContext); ``` 通过以上步骤,就可以使用httputil工具类发送带有cookie的HTTP请求了。在发送请求时,服务器将根据提供的cookie进行身份验证或会话管理。 需要注意的是,htttputil工具类的具体使用方式可能会因具体的框架和版本而有所不同,可以根据实际情况进行相应的调整。以上是一个基本的示例,供参考使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值