Post中的header和Parameters
//获取注册验证码
@FormUrlEncoded
@POST("verify/")
Observable<String> post(@Header(value = "timestamp") String timestamp, @Header(value = "sign") String sign,@Header (value = "phone") String phone,@Field("phone") String v);
其中 @Header 为post请求中的header , @Field("phone")为请求中的parameter ,仔细看文档才发现phone要求是parameter而不是header。
@Path
@FormUrlEncoded
@POST("verify/{sign}&{timestamp}")
Observable<String> post(@Path(value = "timestamp")String tt,@Path(value = "sign")String sgins)
@path里的参数必须在@POST里有,它是用来替代这里的参数的这里我想要的格式是verify/sign×tamp
它会将其拼接在url后面www.xxxxx/verify/sigh×tamp
如果想要带?的链接,比如www.xxxxx/verify/?timestamp=xxx&sigh=xxx
需要使用@Query来实现
如下
@FormUrlEncoded
@POST("verify/")
Observable<String> post(@Query(value = "timestamp") String tt, @Query(value = "sign")String sgins);
这里不需{timestamp}{sign}
Query里不需要 替换,它会自动拼接出来
打印的请求log如下http:xxxxxx/verify/?timestamp=1533541967&sign=xxxxxxxxxx
之所以要讲这里,是因为前任程序员在这个?这里请求的时候被编码成了%3F,这个是没法使用的,而他的写法是
使用@Path,在{sign}里进行替换,这样会被再编码橙%3F,遇到这种是需要用@Query的,也希望各位大佬们不要在不求甚解的情况下就使用这个不好维护的东西。