Android网络框架---OkHttp3
1、添加依赖 compile 'com.squareup.okhttp3:okhttp:3.4.2'
project Structure-->dependencied/搜索okhttp.
compile 'com.squareup.okhttp3:okhttp:3.4.2'
2、添加权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
- public class MainActivity extends AppCompatActivity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- }
- //基本请求默认GET请求
- public void net1(View v){
- //可以通过构造方法来使用。使用Builder模式可以设置一些属性
- // OkHttpClient client = new OkHttpClient();
- //缓存的请求的数据,json字符串,
- //Cache questCache = new Cache(new File("cache"),1024);
- OkHttpClient client = new OkHttpClient.Builder()
- //读取超时5s
- .readTimeout(5000, TimeUnit.MILLISECONDS)
- //自带缓存,缓存可做可不做,做了就是让刷新的时候方便些,不会重复去请求同一个url多次
- //.cache(questCache)
- .build();
- //默认GET请求
- Request request = new Request.Builder()
- .url("https://www.baidu.com")
- .build();
- //call就是我们可以执行的请求类
- Call call = client.newCall(request);
- // try {
- // //同步方法,程序运行到这里会等待,所以这里我们不用这个方法
- // Response execute = call.execute();
- // } catch (IOException e) {
- // e.printStackTrace();
- // }
- //异步请求
- call.enqueue(new Callback() {
- @Override
- public void onFailure(Call call, IOException e) {
- Log.e("TAG","请求失败");
- }
- @Override
- public void onResponse(Call call, Response response) throws IOException {
- //子线程
- Log.e("TAG",Thread.currentThread().getName()+"---结果:"+response.body().string());
- //修改UI使用 runOnUiThread();或者使用Handler发送更新UI消息给主线程
- }
- });
- //取消
- // call.cancel();
- }
- //POST请求
- public void net2(View v){
- OkHttpClient client = new OkHttpClient.Builder()
- .readTimeout(5000,TimeUnit.MILLISECONDS)
- .build();
- //创建Form表单对象,可以add多个键值对
- RequestBody body = new FormBody.Builder()
- .add("showapi_appid","27306")
- .add("showapi_sign","150e9206e7f542bab4affe49d73cb920")
- .build();
- Request request = new Request.Builder().url("http://route.showapi.com/578-6")
- .post(body)//添加参数
- .build();
- Call call = client.newCall(request);
- call.enqueue(new Callback() {
- @Override
- public void onFailure(Call call, IOException e) {
- Log.e("TAG","请求失败");
- }
- @Override
- public void onResponse(Call call, Response response) throws IOException {
- Log.e("TAG","---->"+response.toString());
- //子线程
- }
- });
- }
- //文件上传
- public void net3(View v){
- OkHttpClient client = new OkHttpClient.Builder()
- .readTimeout(5000,TimeUnit.MILLISECONDS)
- .build();
- //添加多个文件
- RequestBody fileBody = MultipartBody.create(MediaType.parse("application/octet-stream"),new File("上传的文件地址"));
- RequestBody body = new MultipartBody.Builder()
- //设置为表单类型
- .setType(MultipartBody.FORM)
- //添加表单键值
- .addFormDataPart("image头像字段名称","name文件名称",fileBody)
- .build();
- Request request = new Request.Builder()
- .url("http://192.168.18.250")
- .post(body)
- .build();
- Call call = client.newCall(request);
- call.enqueue(new Callback() {
- @Override
- public void onFailure(Call call, IOException e) {
- }
- @Override
- public void onResponse(Call call, Response response) throws IOException {
- //子线程
- }
- });
- }
- }
MainActivity.java
参考资料:
- http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0106/2275.html
Android网络框架---OkHttp3的更多相关文章
- Android 网络框架 OKHttp3
概述 OKHttp是一个处理网络请求的框架,其优点有,支持http2,对一台机器的所有请求共享同一个socket. 内置连接池,支持连接复用,减少延迟.通过缓存避免重复的请求,请求失败时自动重试主机的 ...
- Android网络框架Volley(体验篇)
Volley是Google I/O 2013推出的网络通信库,在volley推出之前我们一般会选择比较成熟的第三方网络通信库,如: android-async-http retrofit okhttp ...
- Android网络框架Volley(实战篇)
之前讲了ym—— Android网络框架Volley(体验篇),大家应该了解了volley的使用,接下来我们要看看如何把volley使用到实战项目里面,我们先考虑下一些问题: 从上一篇来看 mQu ...
- Android网络框架-Volley实践 使用Volley打造自己定义ListView
这篇文章翻译自Ravi Tamada博客中的Android Custom ListView with Image and Text using Volley 终于效果 这个ListView呈现了一些影 ...
- Android网络框架Volley
Volley是Google I/O 2013推出的网络通信库,在volley推出之前我们一般会选择比较成熟的第三方网络通信库,如: android-async-http retrofit okhttp ...
- ym—— Android网络框架Volley(终极篇)
转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103).谢谢支持! 没看使用过Volley的同学能够,先看看Android网络框架Volley(体验篇)和 ...
- Android 网络框架 Retrofit2
概述 Retrofit是一个OkHttp网络请求框架的封装库,Retrofit通过注解配置网络参数,可以按照我们的规则去构造实际的HTTP请求,能够灵活设置URL.头部.请求体.返回值等,是目前最优雅 ...
- Android网络框架之Retrofit + RxJava + OkHttp 变化的时代
1.什么是Retrofit框架? 它是Square公司开发的现在非常流行的网络框架,所以我们在导入它的包的时候都可以看到这个公司的名字,目前的版本是2. 特点: 性能好,处理快,使用简单,Retrof ...
- Android网络框架OkHttp之get请求(源码初识)
概括 OkHttp现在很火呀.于是上个星期就一直在学习OkHttp框架,虽然说起来已经有点晚上手了,貌似是2013年就推出了.但是现在它版本更加稳定了呀.这不,说着说着,OkHttp3.3版本在这几天 ...
随机推荐
- Android界面布局学习总结
参考文章: http://blog.csdn.net/shakespeare001/article/details/7843460 http://www.cnblogs.com/w-y-f/p/412 ...
- 使用Raphael 画图(三) 事件 (javascript)
这章展示事件例子. 下图是官方API的事件: 例子: var butt1 = paper.set(); var a1 = paper.circle(24.833, 26.917, 26.667).at ...
- unix环境高级编程-读书笔记与习题解答-第一篇
从这周开始逐渐的进入学习状态,每天晚上都会坚持写c程序,并且伴随对这本书的深入,希望能写出更高质量的读书笔记和程序. 本书的第一章,介绍了一些关于unix的基础知识,在这里我不想去讨论linux到底是 ...
- C# 当double数值较大且小数位过多时转化成字符串并保留小数位
今天在C#中碰到了一个问题,需要将double转换成字符串显示,要求保留小数位. 在网上查询了一下相关的文章 具体如下: double temp=3.1415926; (F)Fixed point:s ...
- MySql拾遗
1.“1130-Host is not allowed to connect to this MySQL server” 满世界的人都告诉你,到user表中把root + localhost的“loc ...
- GO:格式化代码
http://www.ituring.com.cn/article/39380 Go 开发团队不想要 Go 语言像许多其它语言那样总是在为代码风格而引发无休止的争论,浪费大量宝贵的开发时间,因此他们制 ...
- 转:.NET 环境中使用RabbitMQ
原文来自于:http://blog.jobbole.com/83819/ 原文出处: 寒江独钓 欢迎分享原创到伯乐头条 在企业应用系统领域,会面对不同系统之间的通信.集成与整合,尤其当面临异构系统 ...
- BZOJ 1048 分割矩阵
Description 将一个a*b的数字矩阵进行如下分割:将原矩阵沿某一条直线分割成两个矩阵,再将生成的两个矩阵继续如此分割(当然也可以只分割其中的一个),这样分割了(n-1)次后,原矩阵被分割成了 ...
- linux在shell中获取时间
linux在shell中获取时间 获得当天的日期 date +%Y-%m-%d 输出: 2011-07-28 将当前日期赋值给DATE变量DATE=$(date +%Y%m%d) 有时候我们需要使用今 ...
- Kernel PCA 原理和演示
Kernel PCA 原理和演示 主成份(Principal Component Analysis)分析是降维(Dimension Reduction)的重要手段.每一个主成分都是数据在某一个方向上的 ...