我是在android中使用retrofit的新手。我有一个get请求正在以良好的方式工作,但我想在URL的端点中包含共享首选项的值。假设我的终点Url是:
public interface Data{
@GET("/myphone/extra/pull/Sharedpreferencevalue") //add shared preference value here
}
我可以在改造中这样做,还是以其他方式做?或者如何在改造中完成?
答案 0 :(得分:0)
您可以使用@Path
注释以编程方式为端点添加值,并在改装服务界面中执行类似的操作:
@GET("/myphone/extra/pull/{sharedprefValue}")
Call<EntityName> getPref(@Path("sharedprefValue") String pref);
答案 1 :(得分:0)
您可以动态添加参数,如下所示:
@GET("/myphone/extra/pull/{Sharedpreferencevalue}")
Call<YourResponseClass> getData(@Path("Sharedpreferencevalue") String value);
答案 2 :(得分:0)
动态使用网址进行改造2,如下所示。
在您的界面中
@GET
public Call<ResponseBody> fetchMileage(@Url String url);
以这种方式使用
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl(ROOT_URL)
.addConverterFactory(GsonConverterFactory.create());
Retrofit retrofit = builder.client( httpClient.build()).build();
MyInterface myInterface = retrofit.create(MyInterface.class);
Call<ResponseBody> result = myInterface.fetchMileage(endpointUrl);
result.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
String output ="";
if (response.isSuccessful()) {
try {
output = response.body().string();
}catch (IOException e)
{
e.printStackTrace();
}
}else{
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable throwable) {
//Toast.makeText(context,"Error "+throwable.getMessage(),Toast.LENGTH_LONG).show();
throwable.printStackTrace();
}
});