OKHttp3

OKHttp3

OKHtto3执行过程

在这里插入图片描述

Get请求

1、无参数

@RestController
@Configuration
public class Okhttp {

    OkHttpClient okHttpClient = new OkHttpClient()
        .newBuilder()
        .connectTimeout(10,TimeUnit.SECONDS)
        .readTimeout(10, TimeUnit.SECONDS)
        .writeTimeout(10,TimeUnit.SECONDS)
        .build();

    @GetMapping("/get")
    public String get () throws IOException {
        Request request = new Request.Builder()
            .url("http://localhost:8080/task")
            .build();
        Response response = null;
        try {
            response = okHttpClient.newCall(request).execute();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return response.body().string();
    }
}

2、有参数

public String getSyncWithParams(String url, String... keyValue) throws IOException {
    Request request = new Request.Builder()
        .url(url)
        .build();
    for (int i=0; i<keyValue.length; i+=2){
        request.newBuilder()
            .addHeader(keyValue[i], keyValue[i+1]);
    }
    Call call = client.newCall(request);
    Response response = call.execute();
    return response.body().string();
}

Post请求

首先添加 MediaType,用于描述Http请求和响应体的内容类型,也就是Content-Type
一次请求就是向目标服务器发送一串文本。什么样的文本?有下面结构的文本。
HTTP请求包结构.
在这里插入图片描述

例如:

POST /meme.php/home/user/login HTTP/1.1
Host: 114.215.86.90
Cache-Control: no-cache
Postman-Token: bd243d6b-da03-902f-0a2c-8e9377f6f6ed
Content-Type: application/x-www-form-urlencoded
tel=13637829200&password=123456
private final MediaType JSON = MediaType.parse("application/json; charset=utf-8");

1、JOSN传参

private final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
public String postBody(String url, String json) throws IOException {
    RequestBody body = RequestBody.create(JSON, json);
    Request request = new Request.Builder()
        .url(baseURL + url)
        .post(body)
        .build();
    Response response = client.newCall(request).execute();
    if (response.isSuccessful()) {
        return response.body().string();
    } else {
        throw new RuntimeException("Unexpected code " + response);
    }
}

2、Key/Value

public String post(String url, String... keyValue) throws IOException {
    RequestBody body = new FormBody.Builder()
        .add(keyValue[0], keyValue[1])
        .build();
    Request request = new Request.Builder()
        .url(baseURL + url)
        .post(body)
        .build();
    Call call = client.newCall(request);
    Response response = call.execute();
    return response.body().string();
}

上传文件

public String postFile(String url, File file) throws IOException {
    MediaType mediaType = MediaType.parse(org.springframework.http.MediaType.APPLICATION_OCTET_STREAM_VALUE);
    RequestBody body = RequestBody.create(mediaType, file);
    RequestBody requestBody = new MultipartBody.Builder().
        setType(MultipartBody.FORM)
        .addFormDataPart("file", file.getName(),body)
        .build();
    Request request = new Request.Builder()
        .post(requestBody)
        .url(baseURL + url)
        .addHeader("Content-Type", org.springframework.http.MediaType.MULTIPART_FORM_DATA_VALUE)
        .build();
    Response response = client.newCall(request).execute();
    return response.body().string();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值