Retrofit在查询参数中添加随机数?

1 人关注

我正在调用一个GET API,它需要一个查询参数 "par",该查询参数包含一个加密的字符串。加密字符串包含一个JSON数据,问题发生在调用API时,随机字符串被添加。例如,这是一个加密的字符串

"0wDs7cLFw63nXIQc%2FodiEJr0DWgJJJGj%2ByALAIaN%2F0TnYKp7yDYcKjE8Kftf%2Bg7tA68DMz5g%2FhJAfmKhzOKVESmrw0OUviTiFz1yQI2IQPM%3D"

但当我进行API调用时,同样的字符串变成了

"0wDs7cLFw63nXIQc%252FodiEJr0DWgJJJGj%252ByALAIaN%252F0TnYKp7yDYcKjE8Kftf%252Bg7tA68DMz5g%252FhJAfmKhzOKVESmrw0OUviTiFz1yQI2IQPM%253D"

Here is my code:

  @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);

Using interceptor, I got this:

https://http://046ba9a626ae.ngrok.io/webresources/generic/key?par=0wDs7cLFw63nXIQc%252FodiEJr0DWgJJJGj%252ByALAIaN%252F0TnYKp7yDYcKjE8Kftf%252Bg7tA68DMz5g%252FhJAfmKhzOKVESmrw0OUviTiFz1yQI2IQPM%253D 
    
2 个评论
The % is being URL encoded 作为 %25 ,所以它不是随机的。
%25 is the Unicode for the percent sign ( % )
java
android
json
get
retrofit2
Ayan Bhattacharjee
Ayan Bhattacharjee
发布于 2020-07-29
1 个回答
Mr_vmh
Mr_vmh
发布于 2020-07-29
已采纳
0 人赞同

在Retrofit2中,参数名称和值默认为URL编码。你需要添加 encoded = true 来改变这一行为。

void createMyStuff(