Android:如何使用改型在所有url的末尾添加内容?
我对Web服务进行了改进。我想向所有请求url添加时间戳。我可以这样做吗:Android:如何使用改型在所有url的末尾添加内容?,android,timestamp,retrofit2,Android,Timestamp,Retrofit2,我对Web服务进行了改进。我想向所有请求url添加时间戳。我可以这样做吗: Retrofit retrofit = new Retrofit.Builder() .baseUrl(API.BASE_URL + Constants.TimeStamp + System.currentTimeMillis() + Constants.Slash) .addConverterFactory(GsonConverterFactory.create())
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(API.BASE_URL + Constants.TimeStamp + System.currentTimeMillis() + Constants.Slash)
.addConverterFactory(GsonConverterFactory.create())
.build();
public interface GitHubService {
@GET("users/{user}/repos")
Call<List<Repo>> listRepos(@Path("user") String user, @Query("timestamp") long timestamp);
}
我的情况是,你应该像下面一样使用。如果你想检查这个链接
您可以这样做:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(API.BASE_URL + Constants.TimeStamp + System.currentTimeMillis() + Constants.Slash)
.addConverterFactory(GsonConverterFactory.create())
.build();
public interface GitHubService {
@GET("users/{user}/repos")
Call<List<Repo>> listRepos(@Path("user") String user, @Query("timestamp") long timestamp);
}
公共接口服务{
@获取(“用户/{user}/repos”)
调用listRepos(@Path(“user”)字符串user,@Query(“timestamp”)长时间戳);
}
您的实现将向改造实例执行的所有请求添加相同的初始时间戳。这是你想要的吗
如果希望在每次调用中将当前/最新时间戳作为url路径的一部分,请使用拦截器:
val okHttpClient = OkHttpClient.Builder()
.addInterceptor( object : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val originalRequest = chain.request()
val originalHttpUrl = originalRequest.url()
val timestampUrl = originalHttpUrl.newBuilder()
.addPathSegment(System.currentTimeMillis().toString())
.build()
val requestBuilder = originalRequest.newBuilder()
.url(timestampUrl)
return chain.proceed(requestBuilder.build())
}
})
.build()
val retrofit = Retrofit.Builder()
.baseUrl(API.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build()
如果您想像Yevhenii建议的那样将时间戳作为查询参数传递,请将拦截器替换为以下内容:
object : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val originalRequest = chain.request()
val originalHttpUrl = originalRequest.url()
val timestampUrl = originalHttpUrl.newBuilder()
.addQueryParameter("timestamp", System.currentTimeMillis().toString())
.build()
val requestBuilder = originalRequest.newBuilder()
.url(timestampUrl)
return chain.proceed(requestBuilder.build())
}
}