retrofit post数据时怎么才能别urlencode?

发布于 2022-09-05 04:38:34 字数 366 浏览 26 评论 0

    @FormUrlEncoded
    @POST("abc/eft/ccc")
    Observable<BaseResponseBean> postURL(@Field(value="urlA", encoded=true) String urlA);

无论encoded=true还是encoded=false(默认)。最终的结果传上去的urlA都是经过UrlEncode转换的。

怎么才能直接post上去原始的字符串呢?

咨询了一些后端人员,表示正常情况下post表单数据,肯定是要URLEncode的。不然如果有&之类的,很容易有问题。
但大陆开发没有那么严谨。我们就是要求传原始的数据的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

私藏温柔 2022-09-12 04:38:34

没有找到方法。最后只能在Interceptor中拦截,进行java.net.URLDecoder.decode("要解码的字符串","utf-8");

恋你朝朝暮暮 2022-09-12 04:38:34

可以不用form 提交的方式,改成json 提交你试试

盛装女皇 2022-09-12 04:38:34

挖坟,对于表单上传肯定是要URLEncode的这个是协议里的一部分,但这个对于你来说是透明的,你不用管,一般是由 两端的框架自行处理,你发送的是 A&B,你的HTTP框架会处理成 A%26B ,后台的框架收到的是 A%26B,框架会自动解码成 A&B 交给上层,也就是说后台开发拿到的还是 A&B 。

阿楠 2022-09-12 04:38:34

你这是用的是post的请求方式,URLEncode只是对你的URL进行encode,你这个字符串实际上是放在http的body里面的,这个实际上和你是没什么关系的。

咿呀咿呀哟 2022-09-12 04:38:34

题主说的 encoded 属性应该是指 @Field 中的 encoded 吧?

文档对这个属性的说明是:Specifies whether the name and value are already URL encoded. 也就是:标注说明这个字段的键和值是否已经进行过编码转换。如果你改为了 true(默认是 false),Retrofit 在这个环节就不会进行 encode 处理了,所以题主要不看下是不是其他环节进行了 encode?

默嘫て 2022-09-12 04:38:34

请问你解决这个问题了吗, 可以给出解决方法吗?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文