我正在尝试从服务器获取列表。问题是,Retrofit 2.0 正在将我的请求转换为我的服务器无法接受的编码请求。所以我需要从请求中删除该自动编码。通过将 encoded = true/false
放入请求中,我尝试了几乎所有解决方案,但它根本不起作用。
现在,情况是:“POST”请求一切正常。有没有类似的方法可以通过“GET”调用来实现?由于编码的 URL,GET 请求给我“400 Bad Request”。 GET 中编码的主要问题。
POST 调用:
工作 POST
@FormUrlEncoded
@POST("login")
Call<UserBean> getLogin(@FieldMap Map<String,String> params);
POST ENCODED URL:(working)
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
不工作 获取
@Headers({"Content-Type:application/x-www-form-urlencoded"})
@GET("getlisting")
Call<MyBean> getListing(@QueryMap Map<String,String> params);
获取编码 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
最佳答案
你正在做双重编码
在邮局
jhobject=%7B
在得到
jhobject=%257B
关于android - Android 中的 Retrofit + GET 方法 + www-form-urlencoded,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44404946/