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的更多相关文章

  1. Android 网络框架 OKHttp3

    概述 OKHttp是一个处理网络请求的框架,其优点有,支持http2,对一台机器的所有请求共享同一个socket. 内置连接池,支持连接复用,减少延迟.通过缓存避免重复的请求,请求失败时自动重试主机的 ...

  2. Android网络框架Volley(体验篇)

    Volley是Google I/O 2013推出的网络通信库,在volley推出之前我们一般会选择比较成熟的第三方网络通信库,如: android-async-http retrofit okhttp ...

  3. Android网络框架Volley(实战篇)

      之前讲了ym—— Android网络框架Volley(体验篇),大家应该了解了volley的使用,接下来我们要看看如何把volley使用到实战项目里面,我们先考虑下一些问题: 从上一篇来看 mQu ...

  4. Android网络框架-Volley实践 使用Volley打造自己定义ListView

    这篇文章翻译自Ravi Tamada博客中的Android Custom ListView with Image and Text using Volley 终于效果 这个ListView呈现了一些影 ...

  5. Android网络框架Volley

    Volley是Google I/O 2013推出的网络通信库,在volley推出之前我们一般会选择比较成熟的第三方网络通信库,如: android-async-http retrofit okhttp ...

  6. ym—— Android网络框架Volley(终极篇)

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103).谢谢支持! 没看使用过Volley的同学能够,先看看Android网络框架Volley(体验篇)和 ...

  7. Android 网络框架 Retrofit2

    概述 Retrofit是一个OkHttp网络请求框架的封装库,Retrofit通过注解配置网络参数,可以按照我们的规则去构造实际的HTTP请求,能够灵活设置URL.头部.请求体.返回值等,是目前最优雅 ...

  8. Android网络框架之Retrofit + RxJava + OkHttp 变化的时代

    1.什么是Retrofit框架? 它是Square公司开发的现在非常流行的网络框架,所以我们在导入它的包的时候都可以看到这个公司的名字,目前的版本是2. 特点: 性能好,处理快,使用简单,Retrof ...

  9. Android网络框架OkHttp之get请求(源码初识)

    概括 OkHttp现在很火呀.于是上个星期就一直在学习OkHttp框架,虽然说起来已经有点晚上手了,貌似是2013年就推出了.但是现在它版本更加稳定了呀.这不,说着说着,OkHttp3.3版本在这几天 ...

随机推荐

  1. cocos2d-x 之 CCArray 源码分析

    cocos2d-x 自己实现了一个数组CCArray ,下面我们来分析一下CCArray的源码 CCArray继承CCObject,所以,CCArray也具有引用计数功能和内存自动管理功能. 数组的源 ...

  2. Linux抓包工具tcpdump详解

    tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具.tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具. tcpd ...

  3. [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. 这种 ...

  4. DEDECMS使用SQL命令批量替换语句

    1.更改文章中的内容 update dede_addonarticle set body=replace(body,'原来的字符','替换后的字符') 2,替换文章标题 update dede_arc ...

  5. 使用jQuery实现跨域提交表单数据

    我们在WEB开发中有时会遇到这种情况,比如要从A网站收集用户信息,提交给B网站处理,这个时候就会涉及到跨域提交数据的问题.本文将给您介绍如何使用jQuery来实现异步跨域提交表单数据.   在jQue ...

  6. html框架集 js刷新页面方法大全

    一.先来看一个简单的例子: 下面以三个页面分别命名为frame.html.top.html.bottom.html为例来具体说明如何做. frame.html 由上(top.html)下(bottom ...

  7. js以json形式提交数据,后台接受

    $("#savename").click(function(){ var fananname=$("#editname").val(); var jsonLis ...

  8. Ubuntu使用Xming和Putty

    运行个复杂的,比如 gnome-session,这个是 GNOME 的启动命令,如果想打开 KDE 就是 startkde root@carlo-cloud:~# xlogoThe program ' ...

  9. Xamarin Mono错误: unable to find explicit activity class

    unable to find explicit activity class在android开发很常见,网上一般是java的解决办法,对我们这些xamariner就无语了. xamarin中用attr ...

  10. 如何更好辨认House of hello恶搞包的真假

    相信很多朋友都知道houseofhello恶搞包这个品牌,甚至很多朋友都买过,首先呢,她是恶搞包,算自主品牌,它无淘宝店,更没有所谓的香港实体店.因为这品牌受到广大朋友的狂热,导致无数仿品的出现,淘宝 ...