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包
com.squareup.okhttp3
okhttp
3.9.1
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 map){
OkHttpClient client = new OkHttpClient();
//构建一个formBody builder
FormBody.Builder builder = new FormBody.Builder();
//循环form表单,将表单内容添加到form builder中
for (Map.Entry 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 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-"), 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;
}