有些砖友说最喜欢看你写的东西了,三言两语使用方法很明了。但是其实不求甚解有时候也不是好事。我有个习惯就是刷球鞋的时候就用卫生纸包起来,我不明白为什么这么做,但是看到别人这么做,我尝试的理解了下就这么做了,我认为用卫生纸包裹球鞋是因为可以加速风干。当我搞得乐此不彼的时候,有人告诉我刷球鞋的时候包卫生纸是因为之前球鞋都是白色的见了风和太阳容易泛黄。。。瞬间我的世界观崩塌了。写代码也是这样,如果不求甚解,很容易出现“刷球鞋”的问题。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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(){});