自定义 RPC框架1——HttpClient实现RPC

本文介绍了使用HttpClient实现自定义RPC框架的过程。内容包括HttpClient的基本概念,服务端(server)和客户端(client)的代码架构,实体类(Pojo)的设计,以及项目启动和测试的方法。源码可在gitee上找到。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HttPClient简介

在JDK中java.net包下提供了用户HTTP访问的基本功能,但是它缺少灵活性或许多应用所需要的功能。

HttpClient起初是Apache Jakarta Common 的子项目。用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本。2007年成为顶级项目。

通俗解释:HttpClient可以实现使用Java代码完成标准HTTP请求及响应。

代码实现

整体代码架构

image-20220416090559318

  • server端是服务端提供远程调用方法
  • client是客户端,访问远程方法
  • pojo放通用的实体类

Pojo(实体类)

代码结构

image-20220416092235725

user类
package com.shen.pojo;

import java.io.Serializable;
import java.util.Objects;

public class User implements Serializable {
   
    private String username;
    private String password;

    public User(){
   
    }

    public User(String username,String password){
   
        this.username = username;
        this.password = password;
    }

    @Override
    public boolean equals(Object o) {
   
        if (this == o) return true;
        if (!(o instanceof User)) return false;
        User user = (User) o;
        return getUsername().equals(user.getUsername()) && getPassword().equals(user.getPassword());
    }

    @Override
    public int hashCode() {
   
        return Objects.hash(getUsername(), getPassword());
    }

    @Override
    public String toString() {
   
        return "{" +
                "\"username\":\"" + username + '\"' +
                ", \"password\":\"" + password + '\"' +
                '}';
    }

    public String getUsername() {
   
        return username;
    }

    public void setUsername(String username) {
   
        this.username = username;
    }

    public String getPassword() {
   
        return password;
    }

    public void setPassword(String password) {
   
        this.password = password;
    }
}

server端(服务端)

代码结构

image-20220416091341830

server端没有修改端口号,使用默认8080端口提供服务

控制器TestController
package com.example.server.controller;

import com.shen.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@Controller
public class TestController {
   
    /**
     * CrossOrigin跨域请求注解,在响应头上增加跨域处理允许,可以让ajax跨域请求当前的服务方法
     * 如果用于注解类型,必须是控制器,代表当前控制器中所以方法,都允许跨域访问
     * @param users
     * @return
     */
    //使用请求体传递参数
    @RequestMapping
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值