1.引用
2.get 请求,post 请求
3.参数的传递(form 和 json)
4.设置全局配置
5.设置 header(自定义的请求拦截处理器,超好用)
6.还有下载功能...我没用到..所以没写,github 上面有使用详情
7.github 地址:https://github.com/YuQianhao/LightHttp
前言:
LightHttp提供了的Get,Post,Put,Delete四种不同方法的同步和异步请求,提供了一个文件下载服务以及一个请求拦截处理器。
一、引用
1、首先将jitpack仓库添加到项目的build.gradle中
allprojects {
repositories {
maven { url 'https://www.jitpack.io' }
}
}
2、在将仓库的项目依赖到你的项目Module的build.gradle中
implementation 'com.github.YuQianhao:LightHttp:1.2.5'
二、get 请求,post 请求
用法一:
get 请求: GetRequest.create()
LightHttp.create(GetRequest.create("https://api.apiopen.top/getSingleJoke"))
.params(FormRequestParameter.create().add("sid","29002949"))
.callback(new ResponseCallback<JokeContent>() {
@Override
public void onSuccess(JokeContent responseData) {
Log.e("bbb","请求的状态码: "+getCode());
Log.e("bbb","请求的状态消息: "+getMessage());
Log.e("bbb", "字符串类型的返回数据: " + getResponseBufferString());
}
@Override
public void onFailure(int code, String message) {
super.onFailure(code, message);
Log.e("bbb", code +" "+ message);
}
})
.async();
post 请求: GetRequest.create()
LightHttp.create(PostRequest.create("https://api.apiopen.top/getWangYiNews"))
.params(FormRequestParameter.create().add("page", "1")
.add("count", "10"))
.callback(new ResponseCallback<NewsResponse>() {
@Override
public void onSuccess(NewsResponse responseData) {
Log.e("bbb", "请求的状态码: " + getCode());
Log.e("bbb", "请求的状态消息: " + getMessage());
Log.e("bbb", "字符串类型的返回数据: " + getResponseBufferString());
}
@Override
public void onFailure(int code, String message) {
super.onFailure(code, message);
Log.e("bbb", code + " " + message);
}
})
.async();
get 和 post 的区别就是GetRequest.create()和PostRequest.create()的区别,其他的地方都一样
用法二
统一管理地址:
public class RequestAddressManager {
@GetRequest(url = "https://api.apiopen.top/getSingleJoke")
public static class GetSingJoke{}
@PostRequest(url="https://api.apiopen.top/getWangYiNews")
public static class GetWangYiNews{}
}
使用:
//get
LightHttp.loadRequest(RequestAddressManager.GetSingJoke.class)
.params(FormRequestParameter.create().add("sid", "29002949"))
.callback(new ResponseCallback<JokeContent>() {
@Override
public void onSuccess(JokeContent responseData) {
Log.e("bbb", "请求的状态码: " + getCode());
Log.e("bbb", "请求的状态消息: " + getMessage());
Log.e("bbb", "字符串类型的返回数据: " + getResponseBufferString());
}
@Override
public void onFailure(int code, String message) {
super.onFailure(code, message);
Log.e("bbb", code + " " + message);
}
})
.async();
//post
LightHttp.loadRequest(RequestAddressManager.GetWangYiNews.class)
.params(FormRequestParameter.create().add("page", "1")
.add("count", "10"))
.callback(new ResponseCallback<NewsResponse>() {
@Override
public void onSuccess(NewsResponse responseData) {
Log.e("bbb", "请求的状态码: " + getCode());
Log.e("bbb", "请求的状态消息: " + getMessage());
Log.e("bbb", "字符串类型的返回数据: " + getResponseBufferString());
}
@Override
public void onFailure(int code, String message) {
super.onFailure(code, message);
Log.e("bbb", code + " " + message);
}
})
.async();
🤩🤩🤩怎么可以这么简单使用,完全不用封装~拿过来就用,管!
如何查看一下,请求的结果呢?
方法一:在onSuccess方法中打印
Log.e("bbb", "请求的状态码: " + getCode());
Log.e("bbb", "请求的状态消息: " + getMessage());
Log.e("bbb", "字符串类型的返回数据: " + getResponseBufferString());
此外,还提供了以下方法供开发者使用哦~~~
方法名称 | 说明 |
---|---|
Headers getHeaders() | 获取Headers |
Long getContentLength() | 获取返回的数据的长度 |
byte[] getResponseBuffer() | 获取返回的数据的原始类型 |
String getResponseBufferString() | 使用默认编码获取字符串类型的返回数据 |
String getResponseBufferString(Charset charset) | 使用指定编码获取字符串类型的返回数据 |
String getMessage() | 获取Http请求的状态消息 |
int getCode() | 获取Http请求的状态码 |
MediaType getMediaType() | 获取返回数据类型的MediaType |
_Tx to() | 获取服务具体返回的数据,并给提供转换后的版本 |
方法二:在MyApplication中设置一下setRequestFirstHandler,也就是作者自定义的请求拦截器,注意哦,只在这里设置一下就好啦。也只能在这里设置~~~
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
LightHttp.setRequestFirstHandler(new IRequestFirstHandle() {
@Override
public String handlerUrl(String requestUrl) {
Log.e("aaa","requestUrl: "+requestUrl);//请求连接
return requestUrl;
}
@Override
public Map<String, String> handlerHeader(Map<String, String> header) {
Log.e("aaa","header: "+header.toString());请求 header
return header;
}
@Override
public String handlerBody(String body) {
Log.e("aaa","body: "+body);//请求参数,(get 没有哦,只有 post)
return body;
}
@Override
public String handlerResponse(String response) {
Log.e("aaa","response: "+response);//请求结果
return response;
}
});
}
}
三、参数的传递(form 和 json)
from形式:
//方式一:可以单独添加
FormRequestParameter.create().add("key","value").add("kay","value").....
//方式二,添加 map 的形式
FormRequestParameter.create().addMap(Map<String,String> map)
json 形式:
方式一:map 或者 对象
JsonRequestParameter.create().json(Object object)
方式二:拼好的 json 字符串
JsonRequestParameter.create().jsonSource(String sting)
四、设置全局配置
设置超时
public class LightConfig extends RequestConfig {
@Override
public TimeUnit timeUnit() {
return TimeUnit.SECONDS;
}
@Override
public long callTimeout() {
return 30 * 1000;
}
}
重写RequestConfig类
-
TimeUnit timeUnit():超时的时间计量单位,默认为分钟。
-
long connectTimeout():连接超时时间,默认为1分钟。
-
long writeTimeOut():写数据的超时时间,默认为5分钟。
-
long readTimeout():读数据的超时时间,默认为5分钟。
-
long callTimeout():调用的超时时间,默认为1分钟。
-
RequestInterceptor requestInterceptor():返回一个网络请求的监听器
提供了很多方法,可以重写,然后在 application ,一行代码就搞定啦,你学会了吗?
LightHttp.init(new LightConfig());
五、设置 header
方式一:key value 的形式或者 map
FormRequestParameter.create().header(String key,String value)
JsonRequestParameter.create().header(Map<String,String> heade)
方式二:
LightHttp在OkHttp的基础上额外提供了一个请求拦截器,这个拦截器可以拦截和修改请求所有相关的内容,包括返回值,可以在返回值到达CallBack的时候进行拦截修改。
setRequestFirstHandler(IRequestFirstHandle requestFirstHandler)
//这个拦截器可以拦截和修改请求所有相关的内容,
public interface IRequestFirstHandle {
String handlerUrl(String requestUrl);
Map<String,String> handlerHeader(Map<String,String> header);//这里设置 header
String handlerBody(String body);
String handlerResponse(String response);
}
- handlerUrl:这个方法可以在请求之前处理请求的地址,在请求在创建的时候,会将请求地址通过参数一传递给这个方法,这个方法可以处理一下请求地址,例如增加一个请求头,或者修改一下请求地址,然后通过返回值返回即可。
- handlerHeader:这个方法可以在请求之前处理请求传递的Header,在请求在创建的时候,会将本次请求传递的Header通过参数一传递给这个方法,这个方法可以处理一下本次请求使用的Header,然后通过返回值返回即可。
- handlerBody:这个方法可以在请求之前处理一下请求要传递的Body,在青丘创建的时候,会将本次请求传递的Body通过参数一传递给这个方法,这个方法处理一下未格式化的请求Body,然后通过返回值进行返回。
- handlerResponse:这个方法可以在请求结束后处理请求返回的数据,这个方法会在数据进行格式化之前被调用,传递给这个方法的数据是未格式化的原始数据,处理完成后通过返回值的方式返回原始数据,然后LightHttp在进行数据反序列化或者直接调用Callback直接传递给请求方。
END
友情免费开放接口API链接:https://www.jianshu.com/p/09111d61cb37
如有侵权或有问题,请评论,立马删
网友评论