Okhttp3的简单使用
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的简单使用的更多相关文章
- OkHttp3的简单使用(二)
OkHttp3的简单封装 public class OkHttpUtil { public static final String TAG="OkHttpUtil"; privat ...
- OkHttp3的简单使用(一)
一.导入 1)gradle方式: compile 'com.squareup.okhttp3:okhttp:3.8.0'(okhttp 最新版) compile 'com.squareup.okio: ...
- 深入解析OkHttp3
OkHttp是一个精巧的网络请求库,有如下特性: 1)支持http2,对一台机器的所有请求共享同一个socket 2)内置连接池,支持连接复用,减少延迟 3)支持透明的gzip压缩响应体 4) ...
- Spring Cloud OkHttp设计原理
Spring Cloud 框架最底层核心的组件就是服务调用方式,一般Spring Cloud框架采用的是HTTP的调用框架,本文将在 Spring Cloud应用场景下,介绍组件OkHttp3的设计原 ...
- okhttp3 get post 简单封装
最近打算在新项目中使用 okhttp3, 简单封装了一下异步 get post 因为 CallBack 也是在子线程中执行,所以用到了 Handler public class MyOkHttpCli ...
- OkHttp3几个简单的例子和在子线程更新UI线程的方法
okHttp用于android的http请求.据说很厉害,我们来一起尝尝鲜.但是使用okHttp也会有一些小坑,后面会讲到如何掉进坑里并爬出来. 首先需要了解一点,这里说的UI线程和主线程是一回事儿. ...
- 让你Android开发更简单
转载:http://www.jianshu.com/p/22ff8b5fdadc 搭建一个新的Android项目,你会怎么做? 每个人对应用框架的理解不相同,但是最终达到的效果应该是一样: ①降低项目 ...
- Android--Retrofit+RxJava的简单封装(三)
1,继续接着上一篇的讲讲,话说如果像上一篇这样的话,那么我们每一次请求一个结构都要创建一堆的Retrofit对象,而且代码都是相同的,我们可以试试封装一下 先创建一个HttpMethods类,将Ret ...
- retrofit2 okhttp3 RxJava butterknife 示例
eclipse的jar包配置 eclipse中貌似用不了butterknife buildToolsVersion "23.0.2" defaultConfig { applica ...
随机推荐
- ImportError: cannot import name '_imagingtk'
问题描述 使用tkinter画pillow生成的图片时,在tkinter中抛出此异常. 解决方案 pip install -I --no-cache-dir Pillow 更新pillow 重启解决一 ...
- 【WPF】wpf image控件加载网络图片不显示问题,
1.加载网络图片到内存system.drawing.image对象中2.内存中的image 转Bitmap 再转适合system.windows.controls.image 的BitmapImage ...
- MySQL种种
mysql中You can't specify target table for update in FROM clause错误--http://blog.csdn.net/priestmoon/ar ...
- thinkcmf导航制作
<?php $tree = sp_get_menu_tree('main'); ?> <foreach name="tree" item="vo&quo ...
- 小猪cms ClassifyAction.class.php
<?php /** *语音回复 **/ class ClassifyAction extends UserAction{ public $fid; public function _initia ...
- VS2015中SharedProject与可移植类库(PCL)项目
转自:http://www.tuicool.com/articles/beaMZv3 今天闲里偷空看了点Connect大会的视频,C# 6.0的新语法.EF7的支持非关系型数据库.Windows商店应 ...
- 未知宽度的div水平居中
淘宝分页: div{position:relative; left:50%; float:left;} p{position:relative; left:-50%;}
- Java 抽象类与接口
接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是 Java 语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予 Java 强大的面向对象的能力.他们两者之间对 ...
- 【原创】自己动手写工具----XSmartNote [Beta 1.0]
一.背景 有个朋友是在他们单位的市场部,手里的策划文案以及PPT,少则数百,多则上千,多年下来也是一笔不可小觑的财富,每一次新的策划都可以从以往的文案或PPT中“拿来主义”,有着很好的借鉴意义,但是这 ...
- [Tip]重写PanGestureRecognizer
目标 识别当前pan方向是指定方向 需要API 重写- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event; 获取所在view ...