retrofit post数据时怎么才能别urlencode?
@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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
没有找到方法。最后只能在Interceptor中拦截,进行java.net.URLDecoder.decode("要解码的字符串","utf-8");
可以不用form 提交的方式,改成json 提交你试试
挖坟,对于表单上传肯定是要URLEncode的这个是协议里的一部分,但这个对于你来说是透明的,你不用管,一般是由 两端的框架自行处理,你发送的是 A&B,你的HTTP框架会处理成 A%26B ,后台的框架收到的是 A%26B,框架会自动解码成 A&B 交给上层,也就是说后台开发拿到的还是 A&B 。
你这是用的是post的请求方式,URLEncode只是对你的URL进行encode,你这个字符串实际上是放在http的body里面的,这个实际上和你是没什么关系的。
题主说的 encoded 属性应该是指
@Field
中的 encoded 吧?文档对这个属性的说明是:Specifies whether the name and value are already URL encoded. 也就是:标注说明这个字段的键和值是否已经进行过编码转换。如果你改为了 true(默认是 false),Retrofit 在这个环节就不会进行 encode 处理了,所以题主要不看下是不是其他环节进行了 encode?
请问你解决这个问题了吗, 可以给出解决方法吗?