OkHttp的POST、GET请求方式

    xiaoxiao2021-12-13  19

    本博客内容一致同步到本人的博客站点:http://www.zhoutaotao.xyz 欢迎访问留言交流

    OkHttp的POST、GET请求方式

    之前看了Retrofit网络请求框架,感觉很Cool,Retrofit是基于OkHttp的二次封装,但是非常有必要回头再看看OkHttp,吃水不忘挖井人,先从最基本的POST GET请求开始吧

    POST请求

    至于为什么先写POST方式在写GET方式,这是因为啊,我写完POST的代码后发现,我需要写一篇文章记录下来,不过差不多啦 //创建一个基本请求连接 OkHttpClient okHttpClient=new OkHttpClient(); //创建表单存储 FormEncodingBuilder formEncodingBuilder=new FormEncodingBuilder(); //将参数以键值对的方式写入 formEncodingBuilder.add("name","周涛"); formEncodingBuilder.add("number","1371113"); //构建响应体,添加基本的URL以及POST参数 final Request request=new Request.Builder() .url("http://position.c.zmit.cn/index.php/api/login") //不小心暴露了签到系统的登陆接口啦~~~不过怕啥呢,哈哈哈 .post(formEncodingBuilder.build()) .build //创建执行Call Call call=okHttpClient.newCall(request //Call进行异步执行,如果需要阻塞线程,可以使用同步执行的方式 //及时call.execute();会返回一个Response对象 //这两个回调函数均不是在主线程执行的,也就UI线程,需要更新UI,请使用下面的机制 //runOnUiThread(new Runnable() { // @Override //public void run() { // Toast.makeText(getBaseContext(),content,showStyle).show(); //} // }); call.enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { Log.e("请求失败",e.toString()); showTOast("请求失败:"+e.toString(),Toast.LENGTH_SHORT); } @Override public void onResponse(Response response) throws IOException { showTOast("请求成功:"+response.body().string(),Toast.LENGTH_SHORT); } });

    GET请求

    废话不多说,上代码,只要在POST请求的基础上吧参数代码去掉就行了很简单吧,其余代码都是类似的,不做复述 //创建一个基本请求连接 OkHttpClient okHttpClient=new OkHttpClient(); //创建表单存储 final Request request=new Request.Builder() .url("http://position.c.zmit.cn/index.php/api/login") //不小心暴露了签到系统的登陆接口啦~~~不过怕啥呢,哈哈哈 .build //创建执行Call Call call=okHttpClient.newCall(request);

    FileUpdate的方法

    OkHttpClient okHttpClient=new OkHttpClient(); //从SDCard读取文件 ,注意在androidMainFest.xml文件中写外置SD卡读取权限,还有网络权限 File file = new File(Environment.getExternalStorageDirectory(), "balabala.mp4"); //加入文件 //记得刚开始上班的时候,有个多文件上传,难坏了,使用的是Retrofit请求的方式才成功 //没有试过OkHttp上传多文件怎么样 RequestBody requestBody=RequestBody.create(MediaType.parse("application/octet-stream"),file); final Request request=new Request.Builder() .url("http://position.c.zmit.cn/index.php/api/login") //这里的URl作为例子,并没有上传的功能。理解就行 .post(requestBody) .build(); Call call=okHttpClient.newCall(request); //老样子,。异步执行 call.enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { Log.e("请求失败",e.toString()); showTOast("请求失败:"+e.toString(),Toast.LENGTH_SHORT); } @Override public void onResponse(Response response) throws IOException { showTOast("请求成功:"+response.body().string(),Toast.LENGTH_SHORT); } }); 就是辣么简单,不过还是需要继续封装以下,要不然这么多代码写着累死了,明天继续学习OkHttp
    转载请注明原文地址: https://ju.6miu.com/read-950273.html

    最新回复(0)