OkHttp的介绍及基础使用
来源:互联网 发布:人工智能的基金有哪些 编辑:程序博客网 时间:2024/05/22 12:35
特点
开源Http库 支持GZIP压缩 支持响应缓存 支持链接复用 Okhttp作为安卓4.4的UrlConnection的底层采纳
配置
compile 'com.squareup.okhttp3:okhttp:3.4.1'
配置OkhttpClient
//单独配置一个使用newBuilder() private OkHttpClient mHttpClient = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(10, TimeUnit.SECONDS) .writeTimeout(10, TimeUnit.SECONDS).build();
get请求
private String doGet() { Request request = new Request.Builder().url("http://httpbin.org/get") .header("User-Agent", "OkHttpDemo/1.0")//同一个key,覆盖 .header("User-Agent", "OkHttpDemo/2.0") .addHeader("X-Key", "value1") .addHeader("X-Key", "value2").build();//同一个key,追加 try { Response response = mHttpClient.newCall(request).execute(); if (response.isSuccessful()) { return response.body().string(); } } catch (IOException e) { e.printStackTrace(); } return null; }
post请求
private String doPost() { //请求体 RequestBody requestBody = new RequestBody() { @Override public MediaType contentType() { return MediaType.parse("text/plain"); } @Override public void writeTo(BufferedSink sink) throws IOException { InputStream inputStream = getResources().openRawResource(R.raw.data); byte[] buffer = new byte[1024]; int read; while ((read = inputStream.read(buffer)) > 0) { sink.write(buffer, 0, read); } sink.flush(); inputStream.close(); } }; MultipartBody multipartBody = new MultipartBody.Builder().addPart(requestBody) .addPart(RequestBody.create(MediaType.parse("text/plain"), "this is test data from code")).build(); Request request = new Request.Builder().url("http://httpbin.org/post") .header("User-Agent", "OkHttpDemo/1.0") .method("POST", multipartBody) .build(); try { Call call = mHttpClient.newCall(request); Response response = call.execute(); if (response.isSuccessful()) { return response.body().string(); } } catch (IOException e) { e.printStackTrace(); } return null; }
异步get请求
private void doGetAsync() { Request request = new Request.Builder().url("http://httpbin.org/get") .header("User-Agent", "OkHttpDemo/1.0").build(); mHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, final Response response) throws IOException { if (response.isSuccessful()) { final String result = response.body().string(); mTvContent.post(new Runnable() { @Override public void run() { mTvContent.setText(result); } }); } } }); }
0 0
- OkHttp的介绍及基础使用
- OkHttp的使用介绍
- 简单的OkHttp使用介绍
- okhttp的使用及详解
- Okhttp的简单介绍和使用(一)
- Okhttp的简单介绍和使用
- okHttp 基础及封装
- gcc编译器的介绍及使用基础
- OkHttp使用介绍
- OkHttp使用介绍
- OkHttp使用介绍
- OkHttp使用介绍
- okHttp使用介绍
- OkHttp使用介绍
- OkHttp使用介绍
- OkHttp使用介绍 - 冷耳听语
- OkHttp使用介绍
- OkHttp使用介绍
- sql之浅谈视图的作用
- EOJ 3177 顺序查找
- 数组操作总结(javascript)
- some basic interview question
- 基于javascript的基本数据结构和查找算法
- OkHttp的介绍及基础使用
- 多线程状态
- JavaScript 多个属性一起变化
- java 对象的序列化 要点
- cuda8.0 出错:/usr/bin/ld: 找不到 -lGL
- Android登录注册功能封装
- hibernate主键生成策略
- Windows下,文件(夹)选择/打开对话框的三种创建方式
- 算法分析与设计——Tsp(2)