get方法/post方法应用拦截器

本文介绍了一种在Android环境中实现HTTP请求拦截的方法,包括GET和POST两种请求方式的处理流程。通过对URL进行拼接和参数处理,实现了统一的请求头和公共参数添加,确保了请求的一致性和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.get方法拦截器
public static void doGet1(String oldUrl, Callback callback) {
    //要添加的公共参数...map
    Map<String,String> map = new HashMap<>();
    map.put("source","android");

    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();//新的路径
    //创建OkHttpClient请求对象
    OkHttpClient okHttpClient = getInstance();
    //创建Request
    Request request = new Request.Builder().url(newUrl).build();
    //得到Call对象
    Call call = okHttpClient.newCall(request);
    //执行异步请求
    call.enqueue(callback);
}
2.post方法拦截器
public static void doPost1(String url, Map<String, String> params, Callback callback) {
    //要添加的公共参数...map
    Map<String,String> map = new HashMap<>();
    map.put("source","android");
    //创建OkHttpClient请求对象
    OkHttpClient okHttpClient = getInstance();
    //3.x版本post请求换成FormBody 封装键值对参数
    FormBody.Builder builder = new FormBody.Builder();
    //遍历集合
    for (String key : params.keySet()) {
        builder.add(key, params.get(key));

    }
    //添加公共参数
    for (Map.Entry<String,String> entry: map.entrySet()) {
        builder.add(entry.getKey(),entry.getValue());
    }
    //创建Request
    Request request = new Request.Builder().url(url).post(builder.build()).build();

    Call call = okHttpClient.newCall(request);
    call.enqueue(callback);

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值