Java之okhttp3请求方式

在java开发中,发起http请求是非常常见的需求,常用的有HttpClient,下面聊一下okhttp3的请求方式。
1、引入okhttp3依赖

		<dependency>
            <groupId>io.github.admin4j</groupId>
            <artifactId>http</artifactId>
            <version>0.4.0</version>
        </dependency>

2、提供springboot工程及http接口

@RestController
public class HelloController {

    /**
     * @description: get请求
     */
    @GetMapping("/hello")
    public String hello(@RequestParam String name) {
        return "hello," + name;
    }

    /**
     * @description: get请求
     */
    @GetMapping("hello2/{name}")
    public String hello2(@PathVariable("name") String name) {
        return "hello2," + name;
    }

    /**
     * @description: post请求
     */
    @PostMapping("hello3")
    public String hello3(@RequestBody Map map) {
        return map.get("name").toString();
    }

    /**
     * @description: form表单请求
     */
    @RequestMapping("hello4")
    public String hello4(@RequestParam Map map) {
        return map.get("name").toString();
    }

    /**
     * @description: post请求
     */
    @RequestMapping("hello5")
    public Object hello5(@RequestBody Map map) {
        return map;
    }
}

3、http请求

public class App {
    public static void main(String[] args) {
        System.out.println("Hello World!");
        // get
        //okhttp3.Response getResponse = HttpUtil.get("", Pair.of("", ""));
        JSONObject getResponse = HttpJsonUtil.get("http://localhost:8080/hello", Pair.of("name", "liubei"));
        System.out.println("get=" + getResponse);
        // post
        //okhttp3.Response postResponse = HttpUtil.post("", "");
        Map<String, Object> params = new HashMap<>(16);
        params.put("name", "admin");
        JSONObject postResponse = HttpJsonUtil.post("http://localhost:8080/hello3", params);
        System.out.println("post=" + postResponse);
        // form
        Map<String, Object> formParams = new HashMap<>(16);
        formParams.put("name", "sunquan");
        //okhttp3.Response formResponse = HttpUtil.postForm("", formParams);
        Object formResponse = HttpJsonUtil.postForm("http://localhost:8080/hello4", formParams);
        System.out.println("form=" + formResponse);

    }
}

4、请求结果
get请求
在这里插入图片描述
post请求
在这里插入图片描述
form表单请求
在这里插入图片描述
可见发起http请求还是挺方便的,感兴趣的小伙伴可以试试~~~///(v)\~~~

### 使用 Java 中的 OkHttp3 库进行网络请求封装 为了简化 OkHttp 的使用,在实际项目开发中通常会对 `OkHttp` 进行一层简单的封装。这种做法不仅能够减少重复代码,还能提高可维护性和扩展性。 #### 创建 OkHttpClient 实例 首先创建一个单例模式下的 `OkHttpClient` 客户端实例来管理连接池和其他配置: ```java import okhttp3.OkHttpClient; import java.util.concurrent.TimeUnit; public class HttpHelper { private static final int TIMEOUT = 10; // 超时时间设置为10秒 private static volatile OkHttpClient client; public static OkHttpClient getInstance() { if (client == null) { synchronized (HttpHelper.class) { if (client == null) { client = new OkHttpClient.Builder() .connectTimeout(TIMEOUT, TimeUnit.SECONDS) .writeTimeout(TIMEOUT, TimeUnit.SECONDS) .readTimeout(TIMEOUT, TimeUnit.SECONDS) .build(); } } } return client; } } ``` #### 构建 Request 请求对象 接着定义通用的方法用于构建不同类型的 HTTP 请求(GET/POST),并将这些方法集成到工具类当中去: ```java import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; import java.io.IOException; public abstract class BaseHttpRequest { protected String url; /** * 发送同步 GET 请求. */ public Response getSync(String urlString) throws IOException { this.url = urlString; Request request = new Request.Builder().url(url).get().build(); try (Response response = HttpHelper.getInstance().newCall(request).execute()) { // 执行HTTP调用[^2] return response; } } /** * 发送异步 POST 请求. */ public void postAsync(String urlString, RequestBody body, Callback callback){ this.url = urlString; Request request = new Request.Builder().url(urlString).post(body).build(); HttpHelper.getInstance().newCall(request).enqueue(callback); } } ``` #### 处理响应数据 最后编写回调接口用来接收来自服务器的数据,并对其进行解析处理: ```java import okhttp3.Call; import okhttp3.Callback; import okhttp3.Response; import org.json.JSONObject; import java.io.IOException; interface HttpResponseHandler extends Callback{ @Override default void onFailure(Call call, IOException e){ System.out.println("Failed to execute request."); } @Override default void onResponse(Call call, Response response)throws IOException{ if (!response.isSuccessful()){ throw new IOException("Unexpected code " + response); }else{ JSONObject jsonResponse = new JSONObject(response.body().string()); handleJson(jsonResponse); } } void handleJson(JSONObject json); } ``` 以上就是基于 OkHttp3 对常见网络请求的一个基本封装方式。通过这种方式可以更方便快捷地发起各种形式的 HTTP 请求,同时也便于后续的功能拓展与优化[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值