首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不使用基本URL的情况下进行改造调用,GET @Url注释失败

在不使用基本URL的情况下进行改造调用,GET @Url注释失败
EN

Stack Overflow用户
提问于 2021-05-21 04:10:47
回答 1查看 40关注 0票数 0

我正在建立一个安卓的应用程序,并想与Retrofit进行一些电话。我有一个进行调用的API类,我有一个使用基本URL的调用,然后在基本URL的基础上构建,但第二个调用被赋予一个自定义的URL,所以我不希望使用基本URL。我使用了@GET注释并使用@Url声明了我的参数,但是当我查看输出时,它仍然使用基本URL,然后在它后面连接自定义URL。

下面是我的类:

代码语言:javascript
复制
import com.alimuzaffar.example.dogs.model.AlbumImages;
import com.alimuzaffar.example.dogs.model.DogBreeds;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import okhttp3.OkHttpClient;
import okhttp3.ResponseBody;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Call;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Url;

public class Api {

    private static ApiInterface api;
    private static final String BASE_URL = "https://rss.itunes.apple.com";

    public static ApiInterface getApi() {
        if (api == null) {
            HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
            logging.setLevel(HttpLoggingInterceptor.Level.BASIC);
            OkHttpClient client = new OkHttpClient.Builder()
                    .addInterceptor(logging)
                    .build();

            Gson gson = new GsonBuilder()
                    .registerTypeAdapter(
                            DogBreeds.class,
                            new JsonDogBreedsDeserializer()).setLenient()
                    .create();

            Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .client(client)
                    .addConverterFactory(GsonConverterFactory.create(gson))
                    .build();

            api = retrofit.create(ApiInterface.class);
        }
        return api;
    }

    public interface ApiInterface
    {
        @GET("api/v1/us/apple-music/top-albums/all/25/explicit.json/")
        Call<DogBreeds> getBreeds();

        @GET
        Call<AlbumImages> fetchImage(@Url String url);
    }
}
EN

回答 1

Stack Overflow用户

发布于 2021-05-21 06:41:08

感谢一个人的评论,我创建了一个全新的翻新实例,并给出了我的自定义URL作为基本URL

代码语言:javascript
复制
        HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
    logging.setLevel(HttpLoggingInterceptor.Level.BASIC);
    OkHttpClient client = new OkHttpClient.Builder()
            .addInterceptor(logging)
            .build();

    Gson gson = new GsonBuilder()
            .registerTypeAdapter(
                    DogBreeds.class,
                    new JsonDogBreedsDeserializer()).setLenient()
            .create();

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(this.getImageUrl())
            .client(client)
            .addConverterFactory(GsonConverterFactory.create(gson))
            .build();

    ApiInterfaceImage api = retrofit.create(ApiInterfaceImage.class);
    api.fetchImage().enqueue(callback);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67627307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档