我正试图从服务器上获取一个列表。问题是,Retrofit 2.0正在将我的请求转换为我的服务器无法接受的编码请求。所以我需要从请求中删除自动编码。我尝试了几乎所有的解决方案,将encoded = true/false放在请求中,但它根本不起作用。
现在的情况是:所有的事情都能很好地处理“帖子”请求。有什么类似的方法可以用一个"GET“电话来做吗?获取请求给我"400坏请求“,因为编码的URL。GET中编码的主要问题。
邮政呼叫:
工作岗位
@FormUrlEncoded
@POST("login")
Call<UserBean> getLogin(@FieldMap Map<String,String> params);后编码网址:(工作)
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);GET编码网址:(不起作用)
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发布于 2017-06-07 06:33:44
你在做双重编码
在岗
jhobject=%7B进场
jhobject=%7B发布于 2017-09-19 12:53:23
我也遇到了同样的问题,直到我删除了这一行,@FormUrlEncoded,看起来GET不需要被编码,或者我不明白的是,您可能需要在代码中删除这一行,并尝试使用@Headers({"Content-Type:application/x-www-form-urlencoded"})
发布于 2020-11-16 10:47:58
我在GET和retrofit中也遇到了同样的问题,下面是改造的解决方案
1-加载URL服务器:
改造=新Retrofit.Builder().baseUrl("URL") retrofit.create(CallApiService.class)服务;
2-加载配置api:
public interface CallApiService {
@GET("URI")
Call<ResponseBody> getProfessions( @Header("x-req-user-id") String x_req_user_id);
}3-调用api和映射数据:
RetrofitLoader retrofitLoader = new RetrofitLoader();
CallApiService service = retrofitLoader.getServiceLoader();
Call<ResponseBody> retrofitCall = service.getProfessions("8");
LOGGER.info("conncet to url : GET " + retrofitCall.request().url());
Response<ResponseBody> response;
try {
response = retrofitCall.execute();
if (!response.isSuccessful())
throw new IOException("Unexpected code " + response);
String responseData = response.body().string();
LOGGER.info("getProfessions Data : " + responseData);
try {
JSONObject jsonObject = new JSONObject(responseData);
return jsonObject.toString();
} catch (JSONException e) {
LOGGER.error("Error jsonObject : " + e);
}
} catch (IOException e) {
e.printStackTrace();
}
return "";https://stackoverflow.com/questions/44404946
复制相似问题