Android 中的改造 + GET 方法 + www-form-urlencoded

Bho*_*att 5 android get url-encoding retrofit retrofit2

我正在尝试从服务器获取列表。问题是,Retrofit 2.0 正在将我的请求转换为我的服务器无法接受的编码请求。所以我需要从请求中删除自动编码。我已经通过提出请求尝试了几乎所有解决方案encoded = true/false,但它根本不起作用。

现在的情况是:“POST”请求一切正常。有没有类似的方法可以通过“GET”调用来做到这一点?由于编码的 URL,GET 请求给我“400 Bad Request”。GET 中编码的主要问题。

后调用:

工作岗位

@FormUrlEncoded
    @POST("login")
    Call<UserBean> getLogin(@FieldMap Map<String,String> params);
Run Code Online (Sandbox Code Playgroud)

帖子编码 URL:(工作)

https://---.---.com/---/webservice/login?
jhobject=%7B%22data%22%3A%22%7B%5C%22username%5C%22%3A%5C%22abz%40cbv.com%5C%22%2C%5C%22password%5C%22%3A%5C%221234%40567%5C%22%2C%5C%22manufacturername%5C%22%3A%5C%22Android%5C%22%2C%5C%22modelname%5C%22%3A%5C%22XT1068%5C%22%2C%5C%22osversion%5C%22%3A%5C%223.4.42-g0a0ded4%5C%22%2C%5C%22countrycode%5C%22%3A%5C%22in%5C%22%2C%5C%22appversion%5C%22%3A%5C%221.0%5C%22%2C%5C%22imei%5C%22%3A%5C%22353325060286683%5C%22%2C%5C%22appfor%5C%22%3A%5C%22Sony%5C%22%7D%22%2C%22enc%22%3A%220%22%7D
Run Code Online (Sandbox Code Playgroud)

不工作 获取

 @Headers({"Content-Type:application/x-www-form-urlencoded"})
    @GET("getlisting")
    Call<MyBean> getListing(@QueryMap Map<String,String> params);
Run Code Online (Sandbox Code Playgroud)

获取编码的 URL:(不起作用)

    https://---.---.com/---/webservice/getlisting?
 jhobject=%257B%2522data%2522%253A%257B%2522pageno%2522%253A%25221%2522%252C%2522totalpages%2522%253A%25220%2522%252C%2522recordperpages%2522%253A%252210%2522%252C%2522cstatus%2522%253A%25221%2522%252C%2522reportid%2522%253A%252253%2522%257D%252C%2522enc%2522%253A%25220%2522%252C%2522token%2522%253A%252209046d74-c047-4534-be0b-050dadad18b8%257E%257E23717%2522%257D
Run Code Online (Sandbox Code Playgroud)

小智 0

你正在做双重编码

在帖子中

jhobject=%7B
Run Code Online (Sandbox Code Playgroud)

在得到

jhobject=%257B
Run Code Online (Sandbox Code Playgroud)