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版本在这几天 ...
随机推荐
- javascript——浅谈javascript模版(自定义)
/** * Created by Administrator on 15-1-19. */ function functionUtil() { } functionUtil = { //某个DOM节点 ...
- php && 逻辑与运算符使用说明
例子:!defined('MAGIC_QUOTES_GPC') && define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc()); o(︶︿︶ ...
- 2基本概念--python深度机器学习
参考彭亮老师的视频教程:转载请注明出处及彭亮老师原创 视频教程: http://pan.baidu.com/s/1kVNe5EJ 基本概念:训练集,测试集,特征值,监督学习,非监督学习,半监督学习,分 ...
- HDU 1996
Problem Description n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列.由于发生错移产生的系列就增加了,这种错误是放错了柱子,并不会把大盘放到小盘上, ...
- Node.js工具模块
在Node.js的模块库中提供实用的模块数量. 这些模块都是很常见的,并同时开发基于任何节点的应用程序频繁使用. S.N. 模块的名称和说明 1 OS Module提供基本的操作系统相关的实用功能 2 ...
- Selenium 自动化验收测试
Web 应用程序的验收测试常常涉及一些手工任务,例如打开一个浏览器,并执行一个测试用例中所描述的操作.但是手工执行的任务容易出现操作人员人为的错误,也比较费时间.因此,尽可能将这些任务自动化,以消除人 ...
- 为Ubuntu配置ssh服务 方便远程登陆
Ubuntu系统必须开启ssh服务后,XP或者其他的主机才可以远程登陆到Ubuntu系统. 1,安装软件包,执行sudo apt-get install openssh-server Ubuntu缺省 ...
- Maven实战七
转载:http://www.iteye.com/topic/973166 前言 Maven,发音是[`meivin],"专家"的意思.它是一个很好的项目管理工具,很早就进入了我的必 ...
- Linux kernel ‘fib6_add_rt2node’函数安全漏洞
漏洞名称: Linux kernel ‘fib6_add_rt2node’函数安全漏洞 CNNVD编号: CNNVD-201307-265 发布时间: 2013-07-16 更新时间: 2013-07 ...
- MFC添加自定义消息
由于MFC中无法通过类向导来自定义消息,所以需要手动添加,主要过程如下: 本文基于vs2008下通过线程实现数据实时更新的对话框运用程序 1. 定义消息(Resource.h文件中): 由于很多新控件 ...