OkHttp3发起POST或GET请求

简介: OkHttp3发起POST或GET请求


  • GET请求
    参数直接拼接在 url 后
/**
 * HTTP接口-GET方式,请求参数形式为params形式
 *
 * @param url
 * @param param
 * @return String
 */
public static String sendGet(String url, String param) throws IOException {
    OkHttpClient client = new OkHttpClient().newBuilder()
            .connectTimeout(180, TimeUnit.SECONDS)
            .readTimeout(180, TimeUnit.SECONDS)
            .writeTimeout(180, TimeUnit.SECONDS)
            .build();
    String dataUrl = url + "?userName=" + param;
    Request request = new Request.Builder()
            .url(dataUrl)
            .get()
            .build();
    Response response;
    String result;
    try {
        response = client.newCall(request).execute();
        result = response.body().string();
    } catch (IOException e) {
        throw new IOException(DATA, e);
    }
    return result;
}
  • 参数为表单形式的POST请求
/**
 * 表单形式post请求
 *
 * @paramurl 请求地址
 * @parammap post请求参数
 * @return请求结果
 */
public static String doPostWithForm(Map<String, String> map, String url) throws IOException {
    OkHttpClient client = new OkHttpClient().newBuilder()
            .connectTimeout(180, TimeUnit.SECONDS)
            .readTimeout(180, TimeUnit.SECONDS)
            .writeTimeout(180, TimeUnit.SECONDS)
            .build();
    //构建一个formBody builder
    FormBody.Builder builder = new FormBody.Builder();
    //循环form表单,将表单内容添加到form builder中
    for (Map.Entry<String, String> entry : map.entrySet()) {
        String key = entry.getKey();
        String value = entry.getValue();
        builder.add(key, value);
    }
    //构建formBody,将其传入Request请求中
    FormBody body = builder.build();
    Request request = new Request.Builder().url(url).post(body).build();
    Call call = client.newCall(request);
    //返回请求结果
    try (Response response = call.execute()) {
        return response.body().string();
    } catch (IOException e) {
        throw new IOException(e);
    }
}
  • 参数为json形式的POST请求
/**
 * HTTP接口-POST方式,请求参数形式为body-json形式
 *
 * @param url
 * @param jsonString
 * @return String
 */
public static String sendPostWithJson(String url, String jsonString) throws IOException {
    OkHttpClient client = new OkHttpClient().newBuilder().build();
    RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), jsonString);
    Request request = new Request.Builder()
            .post(body)
            .url(url)
            .build();
    Call call = client.newCall(request);
    //返回请求结果
    try {
        Response response = call.execute();
        return response.body().string();
    } catch (IOException e) {
        throw new IOException(e);
    }
}
  • 参数直接拼接在url后面的POST请求
    同GET 请求类似
/**
 * HTTP接口-POST方式,请求参数形式为params形式
 *
 * @param url
 * @param param
 * @return String
 */
public static String sendPost(String url, String param) throws IOException {
    OkHttpClient client = new OkHttpClient().newBuilder()
            .connectTimeout(180, TimeUnit.SECONDS)
            .readTimeout(180, TimeUnit.SECONDS)
            .writeTimeout(180, TimeUnit.SECONDS)
            .build();
    FormBody body = new FormBody.Builder().build();
    String dataUrl = url + "?userName=" + param;
    Request request = new Request.Builder()
            .url(dataUrl)
            .post(body)
            .build();
    Response response;
    String result;
    try {
        response = client.newCall(request).execute();
        result = response.body().string();
    } catch (IOException e) {
        throw new IOException(e);
    }
    return result;
}


相关文章
post 的接口请求
post 的接口请求
60 0
|
缓存
POST 为什么会发送两次请求?
POST 为什么会发送两次请求?
831 0
|
2月前
|
JSON 安全 前端开发
post为什么会发送两次请求?
post为什么会发送两次请求?
91 12
|
Android开发
【OkHttp】OkHttp Get 和 Post 请求 ( 同步 Get 请求 | 异步 Get 请求 | 同步 Post 请求 | 异步 Post 请求 )(一)
【OkHttp】OkHttp Get 和 Post 请求 ( 同步 Get 请求 | 异步 Get 请求 | 同步 Post 请求 | 异步 Post 请求 )(一)
1081 0
|
5月前
httprequest- post- get -发送请求
httprequest- post- get -发送请求
28 1
|
5月前
|
XML 安全 前端开发
post为什么会发送两次请求详解
【6月更文挑战第5天】在Web开发中,开发者可能会遇到POST请求被发送了两次的情况,
168 0
|
6月前
|
JSON 中间件 数据格式
在服务器框架中处理 POST 请求
在服务器框架中处理 POST 请求
|
XML JSON 安全
get请求和post请求的区别以及常用请求方式
get请求和post请求的区别以及常用请求方式
|
前端开发 开发者
ajax 第二例:发送 POST 请求| 学习笔记
快速学习 ajax 第二例:发送 POST 请求。
439 0
ajax 第二例:发送 POST 请求| 学习笔记
|
JSON 数据格式
Okhttp post请求数据和使用中的一些问题
Okhttp post请求数据和使用中的一些问题