Android Retrofit在终点中添加共享首选项值

时间:2017-05-24 10:36:45

标签: android sharedpreferences retrofit retrofit2

我是在android中使用retrofit的新手。我有一个get请求正在以良好的方式工作,但我想在URL的端点中包含共享首选项的值。假设我的终点Url是:

public interface Data{
    @GET("/myphone/extra/pull/Sharedpreferencevalue") //add shared preference value here
}

我可以在改造中这样做,还是以其他方式做?或者如何在改造中完成?

3 个答案:

答案 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();
        }
    });