Retrofit 在查询参数中添加随机数?
Retrofit adds random number in query parameter?
我正在调用 GET API,它带有一个查询参数“par”,该查询参数包含一个加密字符串。加密后的字符串中包含一个JSON数据,问题出现在调用API时,添加了随机字符串。例如,这是一个加密的字符串
"0wDs7cLFw63nXIQc%2FodiEJr0DWgJJJGj%2ByALAIaN%2F0TnYKp7yDYcKjE8Kftf%2Bg7tA68DMz5g%2FhJAfmKhzOKVESmrw0OUviTiFz1yQI2IQPM%3D"
但是当我调用 API 时,相同的字符串变为
"0wDs7cLFw63nXIQc%252FodiEJr0DWgJJJGj%252ByALAIaN%252F0TnYKp7yDYcKjE8Kftf%252Bg7tA68DMz5g%252FhJAfmKhzOKVESmrw0OUviTiFz1yQI2IQPM%253D"
这是我的代码:
@GET("sendotp")
Call<ResponseBody> getKey(@QueryMap Map<String,String> map);
Map<String,String> jsonMap=new HashMap<String,String>();
jsonMap.put("par","0wDs7cLFw63nXIQc%2FodiEJr0DWgJJJGj%2ByALAIaN%2F0TnYKp7yDYcKjE8Kftf%2Bg7tA68DMz5g%2FhJAfmKhzOKVESmrw0OUviTiFz1yQI2IQPM%3D");
Call<ResponseBody> callSendOTP=RetrofitSingleton.getInstance().get_Api().getKey(jsonMap);
使用拦截器,我得到了这个:
https://http://046ba9a626ae.ngrok.io/webresources/generic/key?par=0wDs7cLFw63nXIQc%252FodiEJr0DWgJJJGj%252ByALAIaN%252F0TnYKp7yDYcKjE8Kftf%252Bg7tA68DMz5g%252FhJAfmKhzOKVESmrw0OUviTiFz1yQI2IQPM%253D
在 Retrofit2 中,参数名称和值默认采用 URL 编码。您需要添加 encoded = true 来更改此行为。
void createMyStuff(
@Header("X-Signature") String authorization,
@Query(value="nickname", encoded = true) String nickname,
@Query("language") String language,
Callback<MyAPIResponse> cb);
我正在调用 GET API,它带有一个查询参数“par”,该查询参数包含一个加密字符串。加密后的字符串中包含一个JSON数据,问题出现在调用API时,添加了随机字符串。例如,这是一个加密的字符串
"0wDs7cLFw63nXIQc%2FodiEJr0DWgJJJGj%2ByALAIaN%2F0TnYKp7yDYcKjE8Kftf%2Bg7tA68DMz5g%2FhJAfmKhzOKVESmrw0OUviTiFz1yQI2IQPM%3D"
但是当我调用 API 时,相同的字符串变为
"0wDs7cLFw63nXIQc%252FodiEJr0DWgJJJGj%252ByALAIaN%252F0TnYKp7yDYcKjE8Kftf%252Bg7tA68DMz5g%252FhJAfmKhzOKVESmrw0OUviTiFz1yQI2IQPM%253D"
这是我的代码:
@GET("sendotp")
Call<ResponseBody> getKey(@QueryMap Map<String,String> map);
Map<String,String> jsonMap=new HashMap<String,String>();
jsonMap.put("par","0wDs7cLFw63nXIQc%2FodiEJr0DWgJJJGj%2ByALAIaN%2F0TnYKp7yDYcKjE8Kftf%2Bg7tA68DMz5g%2FhJAfmKhzOKVESmrw0OUviTiFz1yQI2IQPM%3D");
Call<ResponseBody> callSendOTP=RetrofitSingleton.getInstance().get_Api().getKey(jsonMap);
使用拦截器,我得到了这个:
https://http://046ba9a626ae.ngrok.io/webresources/generic/key?par=0wDs7cLFw63nXIQc%252FodiEJr0DWgJJJGj%252ByALAIaN%252F0TnYKp7yDYcKjE8Kftf%252Bg7tA68DMz5g%252FhJAfmKhzOKVESmrw0OUviTiFz1yQI2IQPM%253D
在 Retrofit2 中,参数名称和值默认采用 URL 编码。您需要添加 encoded = true 来更改此行为。
void createMyStuff(
@Header("X-Signature") String authorization,
@Query(value="nickname", encoded = true) String nickname,
@Query("language") String language,
Callback<MyAPIResponse> cb);