okhttp总结

简介

OKHttp是Square公司的一个网络请求框架。
使用前的准备工作:
学习:地址

添加依赖:
implementation 'com.squareup.okhttp3:okhttp:version' 

添加权限:
<uses-permission android:name="android.permission.INTERNET"/>

OkHttp进行Get请求

1、拿到OkHttpClient对象
2、构造Request对象
3、将Request封装为Call
4、根据需要调用同步或者异步请求方法

OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder()
        .get()
        .url("www.baidu.com")
        .build();
Call call = okHttpClient.newCall(request);

//同步请求  返回response,会抛出IO异常须try catch【同步调用会阻塞主线程,一般不使用】
try {
    Response response = call.execute();
} catch (IOException e) {
    e.printStackTrace();
}

//异步调用,并设置回调函数【回调函数在子线程,须注意回到主线程更新ui】
call.enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
        runOnUiThread(() -> {
			//更新ui
        });
    }
});

OkHttp进行Post请求提交键值对

使用OkHttp进行Post请求和进行Get请求很类似,只需要五步即可完成:
1、拿到OkHttpClient对象
2、构建FormBody,传入参数
3、构建Request,将FormBody作为Post方法的参数传入
4、将Request封装为Call
5、调用请求,重写回调方法。(同步或者异步请求方法)

OkHttpClient okHttpClient = new OkHttpClient();
FormBody formBody=new FormBody.Builder()
        .add("username", "admin")
        .add("password", "root")
        .build();
Request request=new Request.Builder()
        .url("http://www.jianshu.com/")
        .post(formBody)
        .build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
        Log.d("onResponse", "onResponse: "+response.code());
    }
});

OkHttp进行Post请求提交字符串

post的参数是通过构造一个FormBody通过键值对的方式来添加进去的,其实post方法需要传入的是一个RequestBody对象,FormBody是RequestBody的子类,但有时候我们常常会遇到要传入一个字符串的需求,比如客户端给服务器发送一个json字符串,那这种时候就需要用到另一种方式来构造一个RequestBody

RequestBody requestBody = RequestBody
	.create(MediaType.parse("text/plain;charset=utf-8"), "{username:admin;password:admin}");

OkHttp进行Post请求提交表单

注意事项
1、添加okio依赖
2、在AndroidManifest.xml文件中添加存储卡读写权限
3、如果提交的是表单,一定要设置setType(MultipartBody.FORM)这一句
4、提交的文件addFormDataPart()的第二个参数文件的本地的名字,第三个参数是RequestBody,里面包含了我们要上传的文件的路径以及MidiaType

File file = new File(Environment.getExternalStorageDirectory(), "1.png");
if (!file.exists()){
    Toast.makeText(this, "文件不存在", Toast.LENGTH_SHORT).show();
    return;
}
RequestBody muiltipartBody = new MultipartBody.Builder()
        //一定要设置这句
        .setType(MultipartBody.FORM)
        .addFormDataPart("username", "admin")//
        .addFormDataPart("password", "admin")//
        .addFormDataPart("myfile", "1.png",
        	 RequestBody.create(MediaType.parse("application/octet-stream"), file))
        .build();

封装

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OkHttp是一个开源的HTTP客户端库,用于与服务器进行通信。它提供了简单和强大的API来处理HTTP请求和响应。它可以用于发送同步和异步请求,支持GET、POST、PUT、DELETE等HTTP方法,并可以添加请求头、请求体和查询参数等。 在Ruoyi项目中使用OkHttp,你可以通过将OkHttp的依赖添加到项目中,并使用OkHttp的API来发送HTTP请求。在Ruoyi项目中,你可以使用OkHttp来发送HTTP请求以与服务器进行通信。 在你的代码中,你可以将OkHttp注入到其他Service中并使用它来发送HTTP请求。你可以使用@Autowired注解将OkHttp的实例注入到TestService中,并在test()方法中使用它来发起HTTP请求。 另外,如果你需要对整个系统的HTTP请求执行统一的拦截处理,你可以自定义一个全局拦截器,并将其配置成Spring容器中的bean。在你的代码片段中,SourceInterceptor继承了BaseGlobalInterceptor,并重写了doIntercept方法。在该方法中,你可以对请求进行拦截并添加额外的头信息,如来源信息。 除了上述用法,OkHttp还提供了其他一些方法来处理HTTP请求和响应。你可以根据需要选择合适的方法,例如将响应体内容适配成一个Java类型对象返回,或者使用Void类型不关注返回值等。 总结来说,OkHttp是一个功能强大且易于使用的HTTP客户端库,可以在Ruoyi项目中使用来发送HTTP请求。你可以将OkHttp注入到其他Service中,并使用它来发送HTTP请求。如果需要对整个系统的HTTP请求执行统一的拦截处理,你可以自定义全局拦截器。同时,OkHttp还提供了其他一些方法来处理HTTP请求和响应。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值