首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Android的改造+ GET方法+www-表单-urlencoded

基于Android的改造+ GET方法+www-表单-urlencoded
EN

Stack Overflow用户
提问于 2017-06-07 06:19:44
回答 3查看 3.4K关注 0票数 5

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

现在的情况是:所有的事情都能很好地处理“帖子”请求。有什么类似的方法可以用一个"GET“电话来做吗?获取请求给我"400坏请求“,因为编码的URL。GET中编码的主要问题。

邮政呼叫:

工作岗位

代码语言:javascript
复制
@FormUrlEncoded
    @POST("login")
    Call<UserBean> getLogin(@FieldMap Map<String,String> params);

后编码网址:(工作)

代码语言:javascript
复制
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

不工作

代码语言:javascript
复制
 @Headers({"Content-Type:application/x-www-form-urlencoded"})
    @GET("getlisting")
    Call<MyBean> getListing(@QueryMap Map<String,String> params);

GET编码网址:(不起作用)

代码语言:javascript
复制
    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
EN

回答 3

Stack Overflow用户

发布于 2017-06-07 06:33:44

你在做双重编码

在岗

代码语言:javascript
复制
jhobject=%7B

进场

代码语言:javascript
复制
jhobject=%7B
票数 0
EN

Stack Overflow用户

发布于 2017-09-19 12:53:23

我也遇到了同样的问题,直到我删除了这一行,@FormUrlEncoded,看起来GET不需要被编码,或者我不明白的是,您可能需要在代码中删除这一行,并尝试使用@Headers({"Content-Type:application/x-www-form-urlencoded"})

票数 0
EN

Stack Overflow用户

发布于 2020-11-16 10:47:58

我在GET和retrofit中也遇到了同样的问题,下面是改造的解决方案

1-加载URL服务器:

改造=新Retrofit.Builder().baseUrl("URL") retrofit.create(CallApiService.class)服务;

2-加载配置api:

代码语言:javascript
复制
public interface CallApiService {
@GET("URI")
    Call<ResponseBody> getProfessions( @Header("x-req-user-id") String x_req_user_id);
}

3-调用api和映射数据:

代码语言:javascript
复制
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 "";
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44404946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档