OkHttp的POST、GET请求方式

版权声明:此BLOG为个人维护BLOG,内容均来自原创及互连网转载。最终目的为收集整理自己需要的文章技术等内容,不涉及商业用途。 本BLOG上原创文章未经本人许可,不得用于商业用途及传统媒体。网络媒体转载请注明出处,否则属于侵权行为。 3、有关本站侵权   本BLOG所转载的内容,均是本人未发现有对文章版权声明的文章且无来自传统媒体。如果本BLOG侵犯了您的权益,请联系本人,本人将会在第一时间删除侵权文章 https://blog.csdn.net/qq_20221151/article/details/53408305

本博客内容一致同步到本人的博客站点: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

猜你喜欢

转载自blog.csdn.net/qq_20221151/article/details/53408305