java okhttp3 工具类,Java网络请求工具类,OkHttp网络请求工具类

这个工具类包含了get和post请求,并且支持json字符串参数,object对象做参数,Map键值对参数,支持同步和异步请求,异步请求可以使用默认回调和自定义回调。可以直接复制使用。

Maven依赖:

com.squareup.okhttp3

okhttp

3.11.0

com.alibaba

fastjson

1.2.3

因为需要json字符串转换等,需要json工具。package com.jufanshare.myblog.common.util;

import com.alibaba.fastjson.JSON;

import okhttp3.*;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import java.io.IOException;

import java.util.Iterator;

import java.util.Map;

import java.util.concurrent.TimeUnit;

/**

* @功能:

* @开发者: 大BUG

* @编写时间: 2019/3/20 09:39

*/

public class OkHttpUtil {

private final static Log log = LogFactory.getLog(OkHttpUtil.class);

private static OkHttpClient okHttpClient = new OkHttpClient.Builder()

.connectTimeout(10, TimeUnit.SECONDS)

.writeTimeout(10, TimeUnit.SECONDS)

.readTimeout(20, TimeUnit.SECONDS)

.build();

/**

* get请求,

*

* @param url

*/

public static String doGet(String url) {

Request request = new Request.Builder()

.url(url)//请求的url

.get()//设置请求方式,get()/post()  查看Builder()方法知,在构建时默认设置请求方式为GET

.build(); //构建一个请求Request对象

return getResult(request);

}

/**

* get请求,

*

* @param url

* @param async 是否开启异步 false : 同步

* @return 无返回值

*/

public static void doGet(final String url, boolean async) {

if (!async) {

doGet(url);

} else {

Request request = new Request.Builder()

.url(url)//请求的url

.get()//设置请求方式,get()/post()  查看Builder()方法知,在构建时默认设置请求方式为GET

.build(); //构建一个请求Request对象

//创建/Call

Call call = okHttpClient.newCall(request);

//加入队列 异步操作

call.enqueue(new OkHttpCallBack());

}

}

/**

* 自定义回调

*

* @param url

* @param async

* @param callback

*/

public static void doGet(final String url, boolean async, Callback callback) {

if (!async) {

doGet(url);

} else {

Request request = new Request.Builder()

.url(url)//请求的url

.get()//设置请求方式,get()/post()  查看Builder()方法知,在构建时默认设置请求方式为GET

.build(); //构建一个请求Request对象

//创建/Call

Call call = okHttpClient.newCall(request);

//加入队列 异步操作

call.enqueue(callback);

}

}

/**

* Body方式POST请求

*

* @param url

* @param params

* @return

*/

public static String doPost(String url, Map params) {

FormBody.Builder builder = new FormBody.Builder();

for (String key : params.keySet()) {

//追加表单信息

builder.add(key, params.get(key));

}

RequestBody body = builder.build();

Request request = new Request.Builder()

.url(url)

.post(body)

.build();

return getResult(request);

}

/**

* 是否异步模式

*

* @param url

* @param params

* @param async  false 同步

*/

public static void doPost(String url, Map params, boolean async) {

if (!async) {

doPost(url, params);

} else {

FormBody.Builder builder = new FormBody.Builder();

for (String key : params.keySet()) {

//追加表单信息

builder.add(key, params.get(key));

}

RequestBody body = builder.build();

Request request = new Request.Builder()

.url(url)

.post(body)

.build();

okHttpClient.newCall(request).enqueue(new OkHttpCallBack());

}

}

/**

* 自定义回调

*

* @param url

* @param params

* @param async

* @param callback

*/

public static void doPost(String url, Map params, boolean async, Callback callback) {

if (!async) {

doPost(url, params);

} else {

FormBody.Builder builder = new FormBody.Builder();

for (String key : params.keySet()) {

//追加表单信息

builder.add(key, params.get(key));

}

RequestBody body = builder.build();

Request request = new Request.Builder()

.url(url)

.post(body)

.build();

okHttpClient.newCall(request).enqueue(callback);

}

}

/**

* JSON方式POST请求【传入对象】

*

* @param url

* @param param

* @return

*/

public static String doPost(String url, Object param) {

String jsonString = JSON.toJSONString(param);

//MediaType  设置Content-Type 标头中包含的媒体类型值

RequestBody body = FormBody.create(MediaType.parse("application/json; charset=utf-8")

, jsonString);

Request request = new Request.Builder()

.url(url)

.post(body)

.build();

return getResult(request);

}

public static void doPost(String url, Object param, boolean async) {

if (!async) {

doPost(url, param);

} else {

String jsonString = JSON.toJSONString(param);

//MediaType  设置Content-Type 标头中包含的媒体类型值

RequestBody body = FormBody.create(MediaType.parse("application/json; charset=utf-8")

, jsonString);

Request request = new Request.Builder()

.url(url)

.post(body)

.build();

okHttpClient.newCall(request).enqueue(new OkHttpCallBack());

}

}

/**

* 自定义回调

*

* @param url

* @param param

* @param async

* @param callback

*/

public static void doPost(String url, Object param, boolean async, Callback callback) {

if (!async) {

doPost(url, param);

} else {

String jsonString = JSON.toJSONString(param);

//MediaType  设置Content-Type 标头中包含的媒体类型值

RequestBody body = FormBody.create(MediaType.parse("application/json; charset=utf-8")

, jsonString);

Request request = new Request.Builder()

.url(url)

.post(body)

.build();

okHttpClient.newCall(request).enqueue(callback);

}

}

/**

* JSON方式POST请求【直接传入json字符串】

*

* @param url

* @param param

* @return

*/

public static String doPost(String url, String param) {

//MediaType  设置Content-Type 标头中包含的媒体类型值

RequestBody body = FormBody.create(MediaType.parse("application/json; charset=utf-8")

, param);

Request request = new Request.Builder()

.url(url)

.post(body)

.build();

return getResult(request);

}

public static void doPost(String url, String param, boolean async) {

if (!async) {

doPost(url, param);

} else {

//MediaType  设置Content-Type 标头中包含的媒体类型值

RequestBody body = FormBody.create(MediaType.parse("application/json; charset=utf-8")

, param);

Request request = new Request.Builder()

.url(url)

.post(body)

.build();

okHttpClient.newCall(request).enqueue(new OkHttpCallBack());

}

}

/**

* 自定义回调

*

* @param url

* @param param

* @param async

* @param callback

*/

public static void doPost(String url, String param, boolean async, Callback callback) {

if (!async) {

doPost(url, param);

} else {

//MediaType  设置Content-Type 标头中包含的媒体类型值

RequestBody body = FormBody.create(MediaType.parse("application/json; charset=utf-8")

, param);

Request request = new Request.Builder()

.url(url)

.post(body)

.build();

okHttpClient.newCall(request).enqueue(callback);

}

}

/**

* 发起请求,获取结果

*

* @param request

* @return

*/

private static String getResult(Request request) {

try {

Response response = okHttpClient.newCall(request).execute();

if (response.isSuccessful()) {

return response.body().string();

} else {

return "请求失败,错误码:" + response.code() + "\t信息:" + response.message();

}

} catch (IOException e) {

e.printStackTrace();

return "请求结束:错误为\t" + e.getMessage();

}

}

private static class OkHttpCallBack implements Callback {

@Override

public void onFailure(Call call, IOException e) {

log.error("请求错误【】" + call.toString());

}

@Override

public void onResponse(Call call, Response response) throws IOException {

log.info("请求成功:\t" + response.body().toString());

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的 Java OkHttp3 工具类的示例代码: ```java import okhttp3.*; import java.io.IOException; import java.util.Map; public class OkHttpUtil { private static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); private static final OkHttpClient client = new OkHttpClient(); /** * GET 请求 * * @param url 请求地址 * @return 响应结果字符串 * @throws IOException 请求失败抛出异常 */ public static String get(String url) throws IOException { Request request = new Request.Builder() .url(url) .build(); try (Response response = client.newCall(request).execute()) { return response.body().string(); } } /** * POST 请求 * * @param url 请求地址 * @param params 请求参数 * @return 响应结果字符串 * @throws IOException 请求失败抛出异常 */ public static String post(String url, Map<String, String> params) throws IOException { FormBody.Builder formBuilder = new FormBody.Builder(); for (Map.Entry<String, String> entry : params.entrySet()) { formBuilder.add(entry.getKey(), entry.getValue()); } RequestBody requestBody = formBuilder.build(); Request request = new Request.Builder() .url(url) .post(requestBody) .build(); try (Response response = client.newCall(request).execute()) { return response.body().string(); } } /** * POST 请求请求体为 JSON 格式 * * @param url 请求地址 * @param json 请求体 JSON 字符串 * @return 响应结果字符串 * @throws IOException 请求失败抛出异常 */ public static String postJson(String url, String json) throws IOException { RequestBody requestBody = RequestBody.create(JSON, json); Request request = new Request.Builder() .url(url) .post(requestBody) .build(); try (Response response = client.newCall(request).execute()) { return response.body().string(); } } } ``` 使用示例: ```java public class Main { public static void main(String[] args) throws IOException { // GET 请求 System.out.println(OkHttpUtil.get("https://www.baidu.com")); // POST 请求,表单参数 Map<String, String> params = new HashMap<>(); params.put("name", "张三"); params.put("age", "18"); System.out.println(OkHttpUtil.post("http://localhost:8080/user", params)); // POST 请求,JSON 参数 String json = "{\"name\":\"张三\",\"age\":18}"; System.out.println(OkHttpUtil.postJson("http://localhost:8080/user", json)); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值