Android网络请求框架剖析一、Okhttp

本文介绍了Android中广泛使用的Okhttp网络请求框架。通过引入Okhttp和Okio库,展示了如何进行GET和POST请求,强调了理解框架的重要性,避免盲目使用。同时推荐了鸿洋的Okhttp-utils封装库,提供更简洁的调用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有些砖友说最喜欢看你写的东西了,三言两语使用方法很明了。但是其实不求甚解有时候也不是好事。我有个习惯就是刷球鞋的时候就用卫生纸包起来,我不明白为什么这么做,但是看到别人这么做,我尝试的理解了下就这么做了,我认为用卫生纸包裹球鞋是因为可以加速风干。当我搞得乐此不彼的时候,有人告诉我刷球鞋的时候包卫生纸是因为之前球鞋都是白色的见了风和太阳容易泛黄。。。瞬间我的世界观崩塌了。写代码也是这样,如果不求甚解,很容易出现“刷球鞋”的问题。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Okhttp是大家广泛运用的一个框架,说明之前首先推荐鸿洋的封装https://github.com/hongyangAndroid/okhttp-utils
封装后的使用方式请直接跳转上述链接。
首先引入
AS两种引入方法说了很多遍了其实效果一样
在gradle里dependencies添加
compile ‘com.squareup.okhttp:okhttp:2.4.0’
compile ‘com.squareup.okio:okio:1.5.0’
然后sync或者rebuild一下

然后使用

Get
获取一个网页的内容。

//创建okHttpClient对象
OkHttpClient mOkHttpClient = new OkHttpClient();
//创建一个Request ,Request.Builder设置更多的参数比如:header、method等。
final Request request = new Request.Builder()
.url(“要加载的网址”)
.build();
//new call 用request构造
Call call = mOkHttpClient.newCall(request);
//由于要异步 请求加入调度 加入enqueue队列 然后在Callback里得到结果
call.enqueue(new Callback()
{
@Override
public void onFailure(Request request, IOException e)
{
}

        @Override
        public void onResponse(final Response response) throws IOException
        {
                //String htmlStr =  response.body().string();拿到返回的字符串
                //response.body().bytes();拿到返回的二进制字节数组
                //esponse.body().byteStream();拿到返回的inputStream
        }
    });             

由于onResponse执行的线程不是UI线程,操作控件的话要用handler

@Override
public void onResponse(final Response response) throws IOException
{
final String res = response.body().string();
runOnUiThread(new Runnable()
{
@Override
public void run()
{
mTv.setText(res);
}

  });

}

Post
Request request = buildMultipartFormRequest(
url, new File[]{file}, new String[]{fileKey}, null);
//post参数包在请求体内
//添加多个String键值对构造RequestBody
FormEncodingBuilder builder = new FormEncodingBuilder();
builder.add(“username”,”okhttp”);
builder.add(“userid”,”1”)
Request request = new Request.Builder()
.url(url)
.post(builder.build())
.build();
mOkHttpClient.newCall(request).enqueue(new Callback(){});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值