http请求工具-OkHttp用法
2024-09-30 14:33:16
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;
}
最新文章
- python之路-Day5
- Android 手机卫士--实现设置界面的一个条目布局结构
- ini_set 设置php配置项 在windows和linux下的不同
- Android 2D游戏引擎AndEngine配置环境
- 夺命雷公狗ThinkPHP项目之----企业网站29之网站前台左侧导航的高亮显示
- Windows系统下使用Sublime搭建nodejs环境
- Jlink更新新固件USB连接不上的问题
- C#做的一个加密/解密的类
- hdoj (1162) 最小生成树
- C/C++中new关键字是否加括号的区别
- hdu4487(概率dp)
- 快速安装 Laravel 5.7
- 递归打印lua中的table
- 破解StarUML3.01最新版 for Linux(Ubuntu16LTS)
- java web dev知识积累
- C/C++ 关于 for循环 的第二个表达式右侧非常量的时候
- C++自定义异常类
- python笔记-6(import导入、time/datetime/random/os/sys模块)
- vue-cli 上手
- [c# 20问] 4.Console应用获取执行路径
热门文章
- ASP.NET Core 1.0 基础与应用启动
- 【Java初探03】——流程控制语句
- CentOS7 下安装 NFS,Linux/Windows 作为客户端
- Ceph/共享存储 汇总
- Docker快速入门(一)
- mysql的mysqli异步与php的携程
- 深度理解C# 的执行原理
- 性能提速:debounce(防抖)、throttle(节流/限频)
- UVA 1605 Building for UN(思维)
- [C#]System.Timers.Timer(2)