yanzhenjie / Kalle

:apple: Http client for Android platform.
https://yanzhenjie.com/Kalle
Apache License 2.0
592 stars 98 forks source link

单个接口传参与公共参数key相同时,为什么没有覆盖而是重复传值? #112

Open xingguanghuanye opened 4 years ago

xingguanghuanye commented 4 years ago

我有设置一个公共参数uid,在某个接口需要传不一样的uid的时候,导致这个接口请求上传了两个uid的参数日志如下: Request Body: uid=20&uid=525. 包括请求头也是一样: Cookie: JSESSIONID=7F725EF6CC3E8309FCD7A2B65C06BC73;JSESSIONID=7F725EF6CC3E8309FCD7A2B65C06BC73 不知道是不是我的代码写的有问题,以下是我写的代码: 设置公共参数和请求头: if (!TextUtils.isEmpty(cookie)) { configBuilder.addHeader(AppConstants.SP_KEY_COOKIE, cookie); } if (!TextUtils.isEmpty(SPUtils.getInstance().getString(AppConstants.SP_KEY_USER_ID))) { configBuilder.addParam("uid", SPUtils.getInstance().getString(AppConstants.SP_KEY_USER_ID)); } Kalle.setConfig(configBuilder.build()); 更新公共参数和请求头参数: Kalle.getConfig().getHeaders().remove(AppConstants.SP_KEY_COOKIE); Kalle.getConfig().getHeaders().add(AppConstants.SP_KEY_COOKIE, AppConstants.JSESSIONID); Kalle.getConfig().getParams().builder().add("uid", user.getUid()); 单个参数传重复参数: Kalle.post(UrlConfig.USER_INFO) .param("uid", uid) ..... 问题出在哪里,知道的请告知一下,谢谢!

AlexFugui commented 4 years ago

configBuilder.addParam();看方法名是个往map里添加kv对象阿 你第一次根据SPUtils.getInstance().getString(AppConstants.SP_KEY_USER_ID)添加了一个key是uid的对象 然后又添加了一次Kalle.getConfig().getParams().builder().add("uid", user.getUid()); 重复了是对的