OKHttp介绍

okhttp是一个第三方类库,用于android中请求网络。这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary) 。用于替代HttpUrlConnection和Apache HttpClient(android API23 里已移除HttpClient)。

okhttp有自己的官网,官网网址:OKHttp官网如果想了解原码可以在github上下载,地址是:https://github.com/square/okhttp

在AndroidStudio中使用不需要下载jar包,直接添加依赖即可: compile ‘com.squareup.okhttp3:okhttp:3.4.1’

在开发中我们会经常需要用到http请求,这里简单介绍一个http请求工具okHttp的用法

1、导入jar包

 <dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.9.1</version>
</dependency>

2、为了便于以后使用,这里封装一个OkHttpUtil的工具类

get请求

 /**
* get请求
* @param url 请求地址
* @return 请求结果
*/
public String doGet(String url) {
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder().url(url).build();
Call call = okHttpClient.newCall(request);
try {
Response response = call.execute();
return response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}

post请求分为两种,From表单形式和JSON参数形式

  • Form表单形式

 /**
* 表单形式post请求
* @param url 请求地址
* @param map post请求参数
* @return 请求结果
*/
public String doPost(String url,Map<String,String> map){
OkHttpClient client = new OkHttpClient();
//构建一个formBody builder
FormBody.Builder builder = new FormBody.Builder();
//循环form表单,将表单内容添加到form builder中
for (Map.Entry<String,String> entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
builder.add(key,value);
}
//构建formBody,将其传入Request请求中
FormBody body = builder.build();
Request request = new Request.Builder().url(url).post(body).build();
Call call = client.newCall(request);
//返回请求结果
try {
Response response = call.execute();
return response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
  • JSON参数形式
 /**
* Json body形式的post请求
* @param url 请求地址
* @return 请求结果
*/
public String doPost(String url,String json){
OkHttpClient client = new OkHttpClient();
RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), json);
Request request = new Request.Builder()
.post(body)
.url(url).
build();
Call call = client.newCall(request);
//返回请求结果
try {
Response response = call.execute();
return response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}

最新文章

  1. python之路-Day5
  2. Android 手机卫士--实现设置界面的一个条目布局结构
  3. ini_set 设置php配置项 在windows和linux下的不同
  4. Android 2D游戏引擎AndEngine配置环境
  5. 夺命雷公狗ThinkPHP项目之----企业网站29之网站前台左侧导航的高亮显示
  6. Windows系统下使用Sublime搭建nodejs环境
  7. Jlink更新新固件USB连接不上的问题
  8. C#做的一个加密/解密的类
  9. hdoj (1162) 最小生成树
  10. C/C++中new关键字是否加括号的区别
  11. hdu4487(概率dp)
  12. 快速安装 Laravel 5.7
  13. 递归打印lua中的table
  14. 破解StarUML3.01最新版 for Linux(Ubuntu16LTS)
  15. java web dev知识积累
  16. C/C++ 关于 for循环 的第二个表达式右侧非常量的时候
  17. C++自定义异常类
  18. python笔记-6(import导入、time/datetime/random/os/sys模块)
  19. vue-cli 上手
  20. [c# 20问] 4.Console应用获取执行路径

热门文章

  1. ASP.NET Core 1.0 基础与应用启动
  2. 【Java初探03】——流程控制语句
  3. CentOS7 下安装 NFS,Linux/Windows 作为客户端
  4. Ceph/共享存储 汇总
  5. Docker快速入门(一)
  6. mysql的mysqli异步与php的携程
  7. 深度理解C# 的执行原理
  8. 性能提速:debounce(防抖)、throttle(节流/限频)
  9. UVA 1605 Building for UN(思维)
  10. [C#]System.Timers.Timer(2)