V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
z42514
V2EX  ›  Android

请教一个 retrofit 的问题

  •  
  •   z42514 · 2016-08-02 11:09:45 +08:00 · 10614 次点击
    这是一个创建于 3065 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在遇到个问题就是:
    POST 方式提交中文会出现乱码,然后我尝试换回了 volley 又正常了。
    请问这种情况是我本地的问题么?

    @FormUrlEncoded
    @POST("add")
    Call<ResponseBody> Add(@FieldMap Map<String, String> options);

    API 是这样定义的,在网上搜似乎没什么人反应 post 中文会乱码的问题,
    希望大家帮忙指点一下,谢谢
    11 条回复    2016-08-08 09:52:12 +08:00
    xuhaoyangx
        1
    xuhaoyangx  
       2016-08-02 12:25:37 +08:00
    底层用 okhttp 不支持 gbk
    kitalphaj
        2
    kitalphaj  
       2016-08-02 13:01:11 +08:00
    感觉和 FormUrlEncoded 有关
    kifile
        3
    kifile  
       2016-08-02 14:44:48 +08:00
    确定和服务器无关?我这边 post 也有 post 中文,表示没有问题.
    z42514
        4
    z42514  
    OP
       2016-08-02 14:47:38 +08:00
    @kifile

    换成 volley ,服务器没变动的情况下没出现这个问题,应该是和服务器无关的
    cbiqih
        5
    cbiqih  
       2016-08-02 15:11:10 +08:00
    可以通过 addInterceptor 添加自定义的 Interceptor
    kifile
        6
    kifile  
       2016-08-02 15:24:32 +08:00
    @z42514 如果方便的话,可以在服务器对比一下两次传入数据的区别,或者进行抓包看看。
    kooze
        7
    kooze  
       2016-08-02 17:11:10 +08:00
    试试 @FieldMap(encoded = false)
    kooze
        8
    kooze  
       2016-08-02 17:11:43 +08:00
    @FieldMap(encoded = true)
    不对,应该是 true
    jinsen47
        9
    jinsen47  
       2016-08-03 09:26:35 +08:00
    POST 使用 url-encode 方式进行传输, 抓包看看 decode 的对不对
    Xinghx
        10
    Xinghx  
       2016-08-06 08:52:42 +08:00
    我使用 retrofit 真的没有碰到过乱码
    Synix
        11
    Synix  
       2016-08-08 09:52:12 +08:00
    不幸也遇到了这个问题,请问楼主解决了吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2833 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 00:32 · PVG 08:32 · LAX 16:32 · JFK 19:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.