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版本在这几天 ...
随机推荐
- cocos2d-x 之 CCArray 源码分析
cocos2d-x 自己实现了一个数组CCArray ,下面我们来分析一下CCArray的源码 CCArray继承CCObject,所以,CCArray也具有引用计数功能和内存自动管理功能. 数组的源 ...
- Linux抓包工具tcpdump详解
tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具.tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具. tcpd ...
- [FindBugs分析记录]Redundant nullcheck of o,which is known to be non-null
官网解释: This method contains a redundant check of a known non-null value against the constant null. 这种 ...
- DEDECMS使用SQL命令批量替换语句
1.更改文章中的内容 update dede_addonarticle set body=replace(body,'原来的字符','替换后的字符') 2,替换文章标题 update dede_arc ...
- 使用jQuery实现跨域提交表单数据
我们在WEB开发中有时会遇到这种情况,比如要从A网站收集用户信息,提交给B网站处理,这个时候就会涉及到跨域提交数据的问题.本文将给您介绍如何使用jQuery来实现异步跨域提交表单数据. 在jQue ...
- html框架集 js刷新页面方法大全
一.先来看一个简单的例子: 下面以三个页面分别命名为frame.html.top.html.bottom.html为例来具体说明如何做. frame.html 由上(top.html)下(bottom ...
- js以json形式提交数据,后台接受
$("#savename").click(function(){ var fananname=$("#editname").val(); var jsonLis ...
- Ubuntu使用Xming和Putty
运行个复杂的,比如 gnome-session,这个是 GNOME 的启动命令,如果想打开 KDE 就是 startkde root@carlo-cloud:~# xlogoThe program ' ...
- Xamarin Mono错误: unable to find explicit activity class
unable to find explicit activity class在android开发很常见,网上一般是java的解决办法,对我们这些xamariner就无语了. xamarin中用attr ...
- 如何更好辨认House of hello恶搞包的真假
相信很多朋友都知道houseofhello恶搞包这个品牌,甚至很多朋友都买过,首先呢,她是恶搞包,算自主品牌,它无淘宝店,更没有所谓的香港实体店.因为这品牌受到广大朋友的狂热,导致无数仿品的出现,淘宝 ...