1.get请求:

/**
*
*okhttp get请求
* */
public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/**
* 创建okhttpClient对象
* */
OkHttpClient mOkHttpClient = new OkHttpClient();
/**
*创建Request对象
**/
final Request request = new Request.Builder()
.url("http://v.juhe.cn/toutiao/index?type=top&key=3f8238bb55566d2b3f0d2204a5e9631f")
.build();
/**
* new Call
* */
Call call = mOkHttpClient.newCall(request); /**
* 请求调度
* */
call.enqueue(new Callback()
{
@Override
public void onFailure(Call call, IOException e) {
Log.e(TAG, "onFailure: "+e.toString());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String htmlStr = response.body().string();
Log.d(TAG, "onResponse() called with: " + "call = [" + call + "], response = [" + htmlStr + "]");
}
});
}
}

2,post请求:

/**
*
* okhttp post请求
* */
public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity";
/**
* 请求地址
* */
String URL = "这里为请求地址";
JSONObject obj = new JSONObject();
String sss; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/**
* post请求体为json字符串
* */
try {
obj.put("name", "123");
obj.put("pwd", "456");
sss = obj.toString();
post(URL, sss);
} catch (Exception e) {
e.printStackTrace();
}
} public void post(String url, String json) throws IOException {
OkHttpClient client = new OkHttpClient();
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder().url(url).post(body).build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.e(TAG, "onFailure: "+e.toString() );
} @Override
public void onResponse(Call call, Response response) throws IOException { Log.i(TAG, "onResponse*: "+response.body().string());
}
}); }
}

3.okhttp下载文件

    <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
/**
*okhttp 下载文件
*
* */
public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity";
OkHttpClient mOkHttpClient=new OkHttpClient();
/**
* 请求地址
* */
String LOAD1="http://gdown.baidu.com/data/wisegame/baidusearch_Android_10189_1399k.apk" ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Request request = new Request.Builder().url(LOAD1).build();
mOkHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.e(TAG, "onFailure: "+e.toString() );
}
@Override
public void onResponse(Call call, Response response) throws IOException {
InputStream is = null;
byte[] buf = new byte[2048];
int len = 0;
FileOutputStream fos = null;
String SDPath = Environment.getExternalStorageDirectory().getAbsolutePath();
try {
is = response.body().byteStream();
File file = new File(SDPath, "test.apk");
fos = new FileOutputStream(file);
while ((len = is.read(buf)) != -1) {
fos.write(buf, 0, len);
}
fos.flush();
Log.d(TAG, "文件下载成功");
} catch (Exception e) {
Log.d(TAG, "文件下载失败"+e.toString());
} finally {
try {
if (is != null)
is.close();
} catch (IOException e) {
}
try {
if (fos != null)
fos.close();
} catch (IOException e) {
}
}
}
});
} }

4. okhttp上传文件

/**
*okhttp 上传文件
*
* */
public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; /**
* 请求地址
* */
String LOAD1="http://192.168.2.104:8080/Gaccept/u/test" ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String SDPath = Environment.getExternalStorageDirectory().getAbsolutePath();
File file = new File(SDPath, "test.apk");
RequestBody fileBody = RequestBody.create(MediaType.parse("application/octet-stream"), file);
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("myfile", "test.apk", fileBody)
.build();
Request request = new Request.Builder()
.url(LOAD1)
.post(requestBody)
.build(); final okhttp3.OkHttpClient.Builder httpBuilder = new OkHttpClient.Builder();
OkHttpClient okHttpClient = httpBuilder
/**
* 设置超时
* */
.connectTimeout(10, TimeUnit.SECONDS)
.writeTimeout(15, TimeUnit.SECONDS)
.build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.e(TAG, "uploadMultiFile()11 e=" + e);
} @Override
public void onResponse(Call call, Response response) throws IOException {
Log.i(TAG, "uploadMultiFile() response11=" + response.body().string());
}
});
} }

Okhttp3的简单使用的更多相关文章

  1. OkHttp3的简单使用(二)

    OkHttp3的简单封装 public class OkHttpUtil { public static final String TAG="OkHttpUtil"; privat ...

  2. OkHttp3的简单使用(一)

    一.导入 1)gradle方式: compile 'com.squareup.okhttp3:okhttp:3.8.0'(okhttp 最新版) compile 'com.squareup.okio: ...

  3. 深入解析OkHttp3

    OkHttp是一个精巧的网络请求库,有如下特性: 
1)支持http2,对一台机器的所有请求共享同一个socket 
2)内置连接池,支持连接复用,减少延迟 
3)支持透明的gzip压缩响应体 
4) ...

  4. Spring Cloud OkHttp设计原理

    Spring Cloud 框架最底层核心的组件就是服务调用方式,一般Spring Cloud框架采用的是HTTP的调用框架,本文将在 Spring Cloud应用场景下,介绍组件OkHttp3的设计原 ...

  5. okhttp3 get post 简单封装

    最近打算在新项目中使用 okhttp3, 简单封装了一下异步 get post 因为 CallBack 也是在子线程中执行,所以用到了 Handler public class MyOkHttpCli ...

  6. OkHttp3几个简单的例子和在子线程更新UI线程的方法

    okHttp用于android的http请求.据说很厉害,我们来一起尝尝鲜.但是使用okHttp也会有一些小坑,后面会讲到如何掉进坑里并爬出来. 首先需要了解一点,这里说的UI线程和主线程是一回事儿. ...

  7. 让你Android开发更简单

    转载:http://www.jianshu.com/p/22ff8b5fdadc 搭建一个新的Android项目,你会怎么做? 每个人对应用框架的理解不相同,但是最终达到的效果应该是一样: ①降低项目 ...

  8. Android--Retrofit+RxJava的简单封装(三)

    1,继续接着上一篇的讲讲,话说如果像上一篇这样的话,那么我们每一次请求一个结构都要创建一堆的Retrofit对象,而且代码都是相同的,我们可以试试封装一下 先创建一个HttpMethods类,将Ret ...

  9. retrofit2 okhttp3 RxJava butterknife 示例

    eclipse的jar包配置 eclipse中貌似用不了butterknife buildToolsVersion "23.0.2" defaultConfig { applica ...

随机推荐

  1. 微信支付(.NET版)

    前段时间做了网页版微信支付,遇到很多问题,不过最终还是解决了,现在在这里记录下开发流程以及说明,给其他人一些参考. 一.准备工作     首先肯定得先要开通微信支付功能,之前开通微信支付需要三万的押金 ...

  2. git初级--配置

    source: http://www.cnblogs.com/sakurayeah/p/5800424.html 一.注册github账号 github网址https://github.com/ 下一 ...

  3. php 设计模式--准备篇

    要了解设计模式 首先我们要先了解 php的命名空间和类的自动载入的功能 下面我们来说一下 命名空间 概念缘由:比如一个a.php的文章 但是我们需要两个 此时同一个目录下不可能存在两个a.php 那么 ...

  4. Dubbo

    启用dubbo访问日志的方法 dubbo.protocol.accesslog=true dubbo.application.logger=slf4j 然后配置logger <logger na ...

  5. Data Binding使用技巧

    Data Binding 根据变量,自动赋值到各widget. How 1.编写layout文件,这里的layout为: act_data_bind_demo.xml 这里需要先准备变量 在具体的wi ...

  6. Java开发环境搭建——CentOS配置

    普通用户添加到sudoers u切换到root visudo进入编辑,找到root  ALL=(ALL)    ALL,在后面加上myusername ALL=(ALL)  ALL 配置网络sudo ...

  7. Sublime 插件- px 转rem

    一个CSS的px值转rem值的Sublime Text 3自动完成插件. 插件效果如下: 安装 克隆项目   https://github.com/hyb628/cssrem.git 进入packag ...

  8. C# GetType与typeof

    在反射和泛型中经常会使用到Type类,获取Type的最常用的方法是 obj.GetType(),和typeof(T).在获取泛型的type时有些小坑. public static void Main( ...

  9. 第八章 交互技术,8.4 Weex 双11会场大规模应用的秒开实战和稳定性保障(作者:鬼道)

    8.4 Weex 双11会场大规模应用的秒开实战和稳定性保障 前言 Native 开发的诸多亮点中,流畅体验和系统调用是最多被提及的.流畅体验体现在页面滚动/动画的流畅性,背后是更好的内存管理和更接近 ...

  10. CSS3的filter用法

    最近到处看到有人在说CSS3的filter一直没有时间自己去测试这效果.今天终于抽出时间学习这个CSS3的Filter.不整不知道呀,一整才让我感到吃惊,太强大了.大家先来看个效果吧: 我想光看上面的 ...