OkHttp简单使用

 

发送http请求,原生的是使用HttpURLConnection,但一般开发首选的是开源的网络通信库,如OKHttp。OKHttp的开源地址:https://github.com/square/okhttp.

下面是OKHttp简单使用,更过详细请移步OKHttp官方网站.

 

①  首先,在app/build.gradle文件的dependencies{}中添加,如下依赖:

implementation 'com.squareup.okhttp3:okhttp:3.4.1'

(3.4.1是版本号,可替换)

②  创建一个OKHttpClient实例

OkHttpClient client=new OkHttpClient(); //创建OkHttpClient实例

●  直接Get数据时:

③  借助Builder,构建一个Request对象,在.build()之前,可连缀其他方法丰富此Request对象,如.url( " url" )等

Request request=new Request.Builder()   //借助Builder构建Request对象
                           .url("http://10.0.2.2/get_data.xml")//指定访问的服务器地址是电脑本地
                           .build();//在build()之前,可连缀其他方法

●  Get数据同时,还Post向服务器发送数据:

③ . ①首先,需要借助Builder构建一个RequestBody对象,将要发送个服务器的数据,连缀add()方法放在里面

RequestBody requestBody=new FormBody.Builder()   //借助Builder构建Request对象
                           .add("Key1", value1)  //连缀add添加数据
                           .add("Key2", value2)
                            .......
                           .build();             //在build()之前,可连缀多个add添加多个数据
 

③ . ②借助Builder,构建一个Request对象,在.build()之前,连缀一个post(RequestBody requestBody)即可发送数据了

Request request=new Request.Builder()   //借助Builder构建Request对象
                           .url("http://10.0.2.2/get_data.xml")//指定访问的服务器地址是电脑本地
                           .post(requestBody)   //连缀一个post(requesBody)即可发送数据
                           .build();            //在build()之前,可连缀其他方法

 

④  调用OKHttpClient的newCall(Request request)创建一个Call对象,并调用Call的execute() 发送请求,并返回一个带有数据Response对象

Response response=client.newCall(request).execute();
//调用OkHttpClient实例的newCall(request)获取Call对象,最后调用call的execute()获取response对象
//服务器返回的数据就在response对象里面

⑤  服务器返回数据在Response中,调用Responsebody().string()即可取出数据,连缀string()是转为字符串

String responseData=response.body().string();  //取出数据并转为字符串

 

实例部分代码:(使用子线程发送http请求)
  showResponse(responseData),parseXMLByPull(responseData);这两个自定义的方法可忽略,只是简单的显示服务器返回的数据和解析XML

private void sendRequestWithOKHTTP() {
        new Thread(new Runnable() {  //新建子线程用于请求
            @Override
            public void run() {
                try {
                    OkHttpClient client=new OkHttpClient(); //创建OkHttpClient实例
                    Request request=new Request.Builder()   //借助Builder构建Request对象
                            .url("http://10.0.2.2/get_data.xml").build();//指定访问的服务器地址是电脑本地
                    Response response=client.newCall(request).execute();
                    //调用OkHttpClient实例的newCall(request)获取Call对象,最后调用call的execute()获取response对象
                    //服务器返回的数据就在response对象里面
                    String responseData=response.body().string();  //取出数据

                    /*将数据显示在testView上*/
                    showResponse(responseData);

                    /*调用,使用pull解析xml*/
                    parseXMLByPull(responseData);

                }catch (IOException e){
                    e.printStackTrace();
                }
            }
        }).start();
    }

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值