公共参数拦截器
来源:互联网 发布:步步惊情39网络完整版 编辑:程序博客网 时间:2024/05/21 15:50
/**
* 公共参数拦截器
*/
private static class CommonParamsInterceptor implements Interceptor{
//拦截的方法
@Override
public Response intercept(Chain chain) throws IOException {
//获取到请求
Request request = chain.request();
//获取请求的方式
String method = request.method();
//获取请求的路径
String oldUrl = request.url().toString();
Log.e("---拦截器",request.url()+"---"+request.method()+"--"+request.header("User-agent"));
//要添加的公共参数...map
Map<String,String> map = new HashMap<>();
map.put("source","android");
if ("GET".equals(method)){
// 1.http://www.baoidu.com/login --------? key=value&key=value
// 2.http://www.baoidu.com/login? --------- key=value&key=value
// 3.http://www.baoidu.com/login?mobile=11111 -----&key=value&key=value
StringBuilder stringBuilder = new StringBuilder();//创建一个stringBuilder
stringBuilder.append(oldUrl);
if (oldUrl.contains("?")){
//?在最后面....2类型
if (oldUrl.indexOf("?") == oldUrl.length()-1){
}else {
//3类型...拼接上&
stringBuilder.append("&");
}
}else {
//不包含? 属于1类型,,,先拼接上?号
stringBuilder.append("?");
}
//添加公共参数....
for (Map.Entry<String,String> entry: map.entrySet()) {
//拼接
stringBuilder.append(entry.getKey())
.append("=")
.append(entry.getValue())
.append("&");
}
//删掉最后一个&符号
if (stringBuilder.indexOf("&") != -1){
stringBuilder.deleteCharAt(stringBuilder.lastIndexOf("&"));
}
String newUrl = stringBuilder.toString();//新的路径
//拿着新的路径重新构建请求
request = request.newBuilder()
.url(newUrl)
.build();
}else if ("POST".equals(method)){
//先获取到老的请求的实体内容
RequestBody oldRequestBody = request.body();//....之前的请求参数,,,需要放到新的请求实体内容中去
//如果请求调用的是上面doPost方法
if (oldRequestBody instanceof FormBody){
FormBody oldBody = (FormBody) oldRequestBody;
//构建一个新的请求实体内容
FormBody.Builder builder = new FormBody.Builder();
//1.添加老的参数
for (int i=0;i<oldBody.size();i++){
builder.add(oldBody.name(i),oldBody.value(i));
}
//2.添加公共参数
for (Map.Entry<String,String> entry:map.entrySet()) {
builder.add(entry.getKey(),entry.getValue());
}
FormBody newBody = builder.build();//新的请求实体内容
//构建一个新的请求
request = request.newBuilder()
.url(oldUrl)
.post(newBody)
.build();
}
}
Response response = chain.proceed(request);
return response;
}
}
* 公共参数拦截器
*/
private static class CommonParamsInterceptor implements Interceptor{
//拦截的方法
@Override
public Response intercept(Chain chain) throws IOException {
//获取到请求
Request request = chain.request();
//获取请求的方式
String method = request.method();
//获取请求的路径
String oldUrl = request.url().toString();
Log.e("---拦截器",request.url()+"---"+request.method()+"--"+request.header("User-agent"));
//要添加的公共参数...map
Map<String,String> map = new HashMap<>();
map.put("source","android");
if ("GET".equals(method)){
// 1.http://www.baoidu.com/login --------? key=value&key=value
// 2.http://www.baoidu.com/login? --------- key=value&key=value
// 3.http://www.baoidu.com/login?mobile=11111 -----&key=value&key=value
StringBuilder stringBuilder = new StringBuilder();//创建一个stringBuilder
stringBuilder.append(oldUrl);
if (oldUrl.contains("?")){
//?在最后面....2类型
if (oldUrl.indexOf("?") == oldUrl.length()-1){
}else {
//3类型...拼接上&
stringBuilder.append("&");
}
}else {
//不包含? 属于1类型,,,先拼接上?号
stringBuilder.append("?");
}
//添加公共参数....
for (Map.Entry<String,String> entry: map.entrySet()) {
//拼接
stringBuilder.append(entry.getKey())
.append("=")
.append(entry.getValue())
.append("&");
}
//删掉最后一个&符号
if (stringBuilder.indexOf("&") != -1){
stringBuilder.deleteCharAt(stringBuilder.lastIndexOf("&"));
}
String newUrl = stringBuilder.toString();//新的路径
//拿着新的路径重新构建请求
request = request.newBuilder()
.url(newUrl)
.build();
}else if ("POST".equals(method)){
//先获取到老的请求的实体内容
RequestBody oldRequestBody = request.body();//....之前的请求参数,,,需要放到新的请求实体内容中去
//如果请求调用的是上面doPost方法
if (oldRequestBody instanceof FormBody){
FormBody oldBody = (FormBody) oldRequestBody;
//构建一个新的请求实体内容
FormBody.Builder builder = new FormBody.Builder();
//1.添加老的参数
for (int i=0;i<oldBody.size();i++){
builder.add(oldBody.name(i),oldBody.value(i));
}
//2.添加公共参数
for (Map.Entry<String,String> entry:map.entrySet()) {
builder.add(entry.getKey(),entry.getValue());
}
FormBody newBody = builder.build();//新的请求实体内容
//构建一个新的请求
request = request.newBuilder()
.url(oldUrl)
.post(newBody)
.build();
}
}
Response response = chain.proceed(request);
return response;
}
}
阅读全文
0 0
- 公共参数拦截器
- 公共参数拦截器
- okhttp公共参数拦截器
- 自定义拦截器,封装公共参数
- OkHttp拦截器POST添加公共参数
- 网络拦截器——公共参数
- 网络请求公共参数拦截器
- 自定义拦截器封装公共请求参数
- okHttp+拦截器 拦截器用来放置公共参数
- OkHttp封装,以及拦截器,拦截公共参数
- OkHttp中Interceptor拦截器之公共参数请求封装
- 自定义的拦截器,封装公共参数 get请求
- okhttp自定义拦截器,封装公共参数,get或post请求不同的拦截器
- retrofit/okhttp添加拦截器公共参数签名,打印详情响应
- OKHttp使用拦截器(Interceptor)POST与GET方法,统一封装传公共参数
- okhttp3Util工具类二次封装//及拦截器添加公共参数
- 参数拦截器问题
- Spring Mvc 公共Controller 使用拦截器注入请求信息
- 多个linux设置ssh免密登陆和各个系统安装zookeeper
- 旧金山启用安保机器人巡逻街道引发争议
- LeetCode-4-Median of Two Sorted Arrays(C语言实现)
- PowerShell的使用
- 智能芯片创人:AI或助人类实现心灵感应交流
- 公共参数拦截器
- 人类离用真正的大脑进行人工智能研究还有多远?
- 循环
- 面向对象2-List list中的这个list到底是不是一个List
- 搜索展示,加入购物车,但不显示购物车页面
- git / git bash 下载与安装
- 搜集到的前端主流框架
- 线性表之链式存储结构_单链表相关算法
- ls命令