趁下班前发一篇短文。

热衷于使用okhttp的理由,数据压缩率高,传输数据时省流量。

今天讲解下okhttp3.x的post请求的用法,get请求与okhttp2.x一样。

我下载的是okhttp3.4.1和okio1.9.0。post请求最常用的是带参数和带内容的数据传递,时间有限就讲这两种。

第一件要说的是连接网络,android的清单记得给权限。

第二件要说的是android一定要用开个线程请求网络,别阻塞UI线程。


1.带参数的post传输。

okhttp3.x用FormBody.Builder代替过去FormEncodingBuilder用法一样的。

事例:

FormBody.Builder params=new FormBody.Builder();params.add("data", "0");OkHttpClient okHttpClient=new OkHttpClient();Request request=new Request.Builder()        .url(url).post(params.build()).build();Call call=okHttpClient.newCall(request);call.enqueue(new Callback() {@Overridepublic void onResponse(Call arg0, Response response) throws IOException {           //   响应成功  response.body().string() 获取字符串数据,当然还可以获取其他        }        @Override        public void onFailure(Call arg0, IOException arg1) {           //   响应失败        }

params中添加键值对。

然后new一个okhttpclient,再创建一个request,把url和post参数塞进request。Call.enqueue()方法可以直接链接网络了,而且可以回调给我们成功或失败。

2.带内容的post传输。

需要用到RequestBody

事例:

RequestBody body=RequestBody.create(MediaType.parse("text/html"),"1");OkHttpClient okHttpClient=new OkHttpClient();Request request=new Request.Builder().url(url).post(body).build();try {Response response=okHttpClient.newCall(request).execute();response.body().string();        //这里没有用call.enqueue方式连接,用了execute方式,都一样的,写法不一样而已,看个人喜欢} catch (IOException e) {e.printStackTrace();//响应失败了,进行响应操作}

这里RequestBody类有个工厂方法是create,里面放两个参数:

create(参数1,参数2)

参数1:数据类型,等于网页说的响应头最常见的是text/html,这是html网页的文本类型,还有application/json,这是json格式。

参数2:内容,支持的数据类型,byte[] ,String,ByteString,File


以上是全部内容了,简单的post传输。

要注意一点的是,无论是带参数还是带内容,请求的方式上面提到了两种,重要的事情,再说一次,

第一种,call.enqueue加入call队列方式,可以调度,网络响应成功或失败都有回调

第二种,execute方式,这种方式快捷,没有什么回调,只要一个try/catch捕抓下异常,效果等同于第一种的回调接口。


最后做个搬运工个,okhttp3.4.1和okio1.9.0的jar包,附上链接。

http://download.csdn.net/detail/qq_29623203/9589007

更多相关文章

  1. android 原生系统服务定位实现
  2. Android:eclipse中导入项目无法编译,robotium 测试用例无法正确运
  3. [置顶] Android(安卓)中轴时光轴
  4. android圆角ImageView的几种实现方式
  5. 《第一行代码--Android》读书笔记之内容提供器
  6. Android的四大组件之三--Activity(4)----->Activity的启动方式和相
  7. Android网络请求库android-async-http使用
  8. Android(安卓)Eclipse 打包apk
  9. Android中网络传输不同内容

随机推荐

  1. Android动态调试so库JNI_Onload函数-----
  2. Android(安卓)动态解析布局,实现制作多套
  3. Android(安卓)内功心法(1.8)——android
  4. android高分段进阶攻略(4)android模拟点击
  5. Google Map Api 在android 中的使用(转载)
  6. 8月顺利拿到OPPO公司Android架构师offer,
  7. Android输入控件详解
  8. Android状态栏右侧添加图标并控制其显示
  9. BlockCanary — 轻松找出Android(安卓)Ap
  10. Android开发 之 Camera2之拍照