这样的网址可以接受吗?
http://baseurl.com/php/project/?sign.get?&site=my_site&time=1538755984978&secretkey=site_secret_key
有一个&就在第二个问号之后,但理论上服务器应该仍然能够阅读它。如果是,您可以这样做:
@GET("/php/project/?sign.externalGetToken?")
@GET("/php/project/?sign.externalGetToken")
fun getAuthToken(
@Query(value = "?site", encoded = true) site: String, // encoded ensure that retrofit doesn't encode the ? into '%3F'
@Query("time") time: String,
@Query("secretkey") secretKey: String
): Call<TokenResponse>
这将导致
http://baseurl.com/php/project/?sign.get&?site=my_site&time=1538755984978&secretkey=site_secret_key
&这一次是在问号之前,但不确定它是否有效。另外,第二种解决方案要求您永远不要为调用的site参数传递null,否则“?site”将不会被打印。
作为最后的手段,如果上面的任何一个都不起作用,您可以尝试改用revolution中的@Url注释。如果你问我,使用服务接口似乎有点矛盾,但至少它应该可以工作。
把你的声明换成:
@GET
fun getAuthToken(
@Url url: String,
@Query("time") time: String,
@Query("secretkey") secretKey: String
): Call<TokenResponse>
service.getAuthToken("/php/project/?sign.externalGetToken?site="+ yourSite, yourTimeString, yourSecretKey");