Post请求
前不久做个功能,使用Retrofit POST请求,其中的一个 Query 参数是一个 JsonObject 转的 String 类型。
先对这个jsonObject 类型的参数做了 URLEncoder.encode, 之后打印出来看是正确的,
但是拼接到url后,发现参数里的双引号没有被转义……
Json数据,所以开头是:{",转义后的十六进制值是:"%7B%22",但实际看到的是 "%7B22",后端接口就不认啦 >_<
Query 参数
查了好久的信息都没查到问题在哪里。
最后查到Query 要这样设置:
@Query(value = "xxx", encoded = true) String valueXXX
指定
encoded = true
看源码
@Documented
@Target(PARAMETER)
@Retention(RUNTIME)
public @interface Query {
/** The query parameter name. */
String value();
/**
* Specifies whether the parameter {@linkplain #value() name} and value are already URL encoded.
*/
boolean encoded() default false;
}
但先encode过了作为value的,不明白为什么还要指定下encoded 为true?
先记这些。