Как использовать метод @GET для вызова API? - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь позвонить в API данных YouTube, чтобы получить количество подписчиков определенного канала.Но я не знаю, как реализовать интерфейс API и определить конечные точки, поэтому я вставил весь оставшийся URL в метод @GET.Но мое приложение аварийно завершает работу при запуске.

Мой полный URL-адрес: https://www.googleapis.com/youtube/v3/channels?part=statistics&id=+UC-lHJZR3Gqxm24_Vd_AJ5Yw&key=AIzaSyAyON6YdgkFrtNHrGGs3IFS4groadJhhts

Вот мой интерфейс:

public interface ApiInterface 
{
    @GET("/channels?part=statistics&id=+UC-lHJZR3Gqxm24_Vd_AJ5Yw&key=AIzaSyAyON6YdgkFrtNHrGGs3IFS4groadJhhts")
    Call<Mainjson> getMainJson();
}

Основная активность:

public class MainActivity extends AppCompatActivity 
{
    private Statistics statistics;
    private String subscribers;
    private TextView subscribersPreview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        subscribersPreview=(TextView) findViewById(R.id.textView3);

        ApiInterface service = ApiClient.getClient().create(ApiInterface.class);

        Call<Mainjson> call = service.getMainJson();

        call.enqueue(new Callback<Mainjson>() {
            @Override
            public void onResponse(Call<Mainjson> call, Response<Mainjson> response) {
                List<Items> items = response.body().getItems();
                statistics=items.get(0).getStatistics();
                subscribers=statistics.getSubscriberCount();
                subscribersPreview.setText(subscribers);
            }

            @Override
            public void onFailure(Call<Mainjson> call, Throwable t) {
                Toast.makeText(MainActivity.this,"Failed to retrieve data",Toast.LENGTH_SHORT).show();
            }
        });

    }
}

Экземпляр дооснащения:

public class ApiClient {

    public static final String BASE_URL = "https://www.googleapis.com/youtube/v3";
    private static Retrofit retrofit = null;


    public static Retrofit getClient() {
        if (retrofit==null) {
            retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }
        return retrofit;
    }
}

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

Самый простой и быстрый способ реализовать использование Android Быстрые сети используют это: -

Быстрые сети Android

0 голосов
/ 29 декабря 2018

проблема с BASE_URL.BASE_URL должно заканчиваться / и удалять / при запуске метода интерфейса.

public static final String BASE_URL = "https://www.googleapis.com/youtube/v3/";

@GET("channels?part=statistics&id=+UC-lHJZR3Gqxm24_Vd_AJ5Yw&key=AIzaSyAyON6YdgkFrtNHrGGs3IFS4groadJhhts")
Call<Mainjson> getMainJson();
...