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;
}


相关文章
|
15天前
|
缓存 安全 数据安全/隐私保护
如何根据请求场景选择 GET 或 POST 请求方法?
【10月更文挑战第27天】根据不同的请求场景,综合考虑数据传输目的、安全性、数据量大小、幂等性要求以及缓存需求等因素,合理地选择GET或POST请求方法,能够更好地实现客户端与服务器之间的数据交互,提高系统的性能和安全性。
117 64
|
Android开发
【OkHttp】OkHttp Get 和 Post 请求 ( 同步 Get 请求 | 异步 Get 请求 | 同步 Post 请求 | 异步 Post 请求 )(一)
【OkHttp】OkHttp Get 和 Post 请求 ( 同步 Get 请求 | 异步 Get 请求 | 同步 Post 请求 | 异步 Post 请求 )(一)
1084 0
|
5月前
httprequest- post- get -发送请求
httprequest- post- get -发送请求
34 1
|
6月前
|
JSON Java fastjson
HttpClient和OkHttp发送http请求
HttpClient和OkHttp发送http请求
|
6月前
|
缓存 安全 API
Post请求和get请求的区别是什么?
Post请求和get请求的区别是什么?
146 2
|
6月前
|
容器
PostMan发送携带参数Get请求、Post请求及SpringMVC解决Post请求中文乱码问题
PostMan发送携带参数Get请求、Post请求及SpringMVC解决Post请求中文乱码问题
211 0
|
XML JSON 安全
get请求和post请求的区别以及常用请求方式
get请求和post请求的区别以及常用请求方式
|
JSON 数据格式
Okhttp post请求数据和使用中的一些问题
Okhttp post请求数据和使用中的一些问题
|
Web App开发 缓存 安全
get请求和post请求的区别
get请求和post请求的区别
get请求和post请求的区别
【OkHttp】OkHttp Get 和 Post 请求 ( 同步 Get 请求 | 异步 Get 请求 | 同步 Post 请求 | 异步 Post 请求 )(二)
【OkHttp】OkHttp Get 和 Post 请求 ( 同步 Get 请求 | 异步 Get 请求 | 同步 Post 请求 | 异步 Post 请求 )(二)
347 0