retrofit2を使用してデータをフェッチできません

ディグビジェイ

Retrofit2を使用してデータをフェッチしようとしていますが、以下のエラーを示す応答を取得できませんでした。

Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 4 column 2 path $

これが私のリクエストURLですhttps://itunes.apple.com/search?term=Michael+jackson&media=musicVideo

以下は私のコードです:

ApiService.class

public interface ApiService {

  @POST("search")
  Call<List<Video>> getTracks(@Body JsonObject jsonObject);
}

RetrofitClient

public class RetrofitClient {

public static Retrofit retrofit = null;

public static Retrofit getInstance(){

    OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .connectTimeout(22, TimeUnit.SECONDS)
            .readTimeout(22, TimeUnit.SECONDS)
            .writeTimeout(22, TimeUnit.SECONDS)
            .build();

    if(retrofit == null)
        retrofit = new Retrofit.Builder()
                .baseUrl("https://itunes.apple.com/")
                .addConverterFactory(GsonConverterFactory.create(new GsonBuilder().setLenient().create()))
                .client(okHttpClient)
                .build();

    return retrofit;
  }
}

Video.java

public class Video {

public int resultCount;
public List<Result> results;

public Video(){}

public Video(int resultCount, List<Result> results) {
    this.resultCount = resultCount;
    this.results = results;
}

public int getResultCount() {
    return resultCount;
}

public void setResultCount(int resultCount) {
    this.resultCount = resultCount;
}

public List<Result> getResults() {
    return results;
}

public void setResults(List<Result> results) {
    this.results = results;
}
}

Result.java

public class Result {

public String wrapperType;
public String kind;
public int artistId;
public int trackId;
public String artistName;
public String trackName;
public String trackCensoredName;
public String artistViewUrl;
public String trackViewUrl;
public String previewUrl;
public String artworkUrl30;
public String artworkUrl60;
public String artworkUrl100;
public double collectionPrice;
public double trackPrice;
public String releaseDate;
public String collectionExplicitness;
public String trackExplicitness;
public int trackTimeMillis;
public String country;
public String currency;
public String primaryGenreName;
public int collectionId;
public String collectionName;
public String collectionCensoredName;
public String collectionViewUrl;
public int discCount;
public int discNumber;
public int trackCount;
public int trackNumber;

public Result(){}

public Result(String wrapperType, String kind, int artistId, int trackId, String artistName, String trackName, String trackCensoredName, String artistViewUrl, String trackViewUrl, String previewUrl, String artworkUrl30, String artworkUrl60, String artworkUrl100, double collectionPrice, double trackPrice, String releaseDate, String collectionExplicitness, String trackExplicitness, int trackTimeMillis, String country, String currency, String primaryGenreName, int collectionId, String collectionName, String collectionCensoredName, String collectionViewUrl, int discCount, int discNumber, int trackCount, int trackNumber) {
    this.wrapperType = wrapperType;
    this.kind = kind;
    this.artistId = artistId;
    this.trackId = trackId;
    this.artistName = artistName;
    this.trackName = trackName;
    this.trackCensoredName = trackCensoredName;
    this.artistViewUrl = artistViewUrl;
    this.trackViewUrl = trackViewUrl;
    this.previewUrl = previewUrl;
    this.artworkUrl30 = artworkUrl30;
    this.artworkUrl60 = artworkUrl60;
    this.artworkUrl100 = artworkUrl100;
    this.collectionPrice = collectionPrice;
    this.trackPrice = trackPrice;
    this.releaseDate = releaseDate;
    this.collectionExplicitness = collectionExplicitness;
    this.trackExplicitness = trackExplicitness;
    this.trackTimeMillis = trackTimeMillis;
    this.country = country;
    this.currency = currency;
    this.primaryGenreName = primaryGenreName;
    this.collectionId = collectionId;
    this.collectionName = collectionName;
    this.collectionCensoredName = collectionCensoredName;
    this.collectionViewUrl = collectionViewUrl;
    this.discCount = discCount;
    this.discNumber = discNumber;
    this.trackCount = trackCount;
    this.trackNumber = trackNumber;
}

public String getWrapperType() {
    return wrapperType;
}

public void setWrapperType(String wrapperType) {
    this.wrapperType = wrapperType;
}

public String getKind() {
    return kind;
}

public void setKind(String kind) {
    this.kind = kind;
}

public int getArtistId() {
    return artistId;
}

public void setArtistId(int artistId) {
    this.artistId = artistId;
}

public int getTrackId() {
    return trackId;
}

public void setTrackId(int trackId) {
    this.trackId = trackId;
}

public String getArtistName() {
    return artistName;
}

public void setArtistName(String artistName) {
    this.artistName = artistName;
}

public String getTrackName() {
    return trackName;
}

public void setTrackName(String trackName) {
    this.trackName = trackName;
}

public String getTrackCensoredName() {
    return trackCensoredName;
}

public void setTrackCensoredName(String trackCensoredName) {
    this.trackCensoredName = trackCensoredName;
}

public String getArtistViewUrl() {
    return artistViewUrl;
}

public void setArtistViewUrl(String artistViewUrl) {
    this.artistViewUrl = artistViewUrl;
}

public String getTrackViewUrl() {
    return trackViewUrl;
}

public void setTrackViewUrl(String trackViewUrl) {
    this.trackViewUrl = trackViewUrl;
}

public String getPreviewUrl() {
    return previewUrl;
}

public void setPreviewUrl(String previewUrl) {
    this.previewUrl = previewUrl;
}

public String getArtworkUrl30() {
    return artworkUrl30;
}

public void setArtworkUrl30(String artworkUrl30) {
    this.artworkUrl30 = artworkUrl30;
}

public String getArtworkUrl60() {
    return artworkUrl60;
}

public void setArtworkUrl60(String artworkUrl60) {
    this.artworkUrl60 = artworkUrl60;
}

public String getArtworkUrl100() {
    return artworkUrl100;
}

public void setArtworkUrl100(String artworkUrl100) {
    this.artworkUrl100 = artworkUrl100;
}

public double getCollectionPrice() {
    return collectionPrice;
}

public void setCollectionPrice(double collectionPrice) {
    this.collectionPrice = collectionPrice;
}

public double getTrackPrice() {
    return trackPrice;
}

public void setTrackPrice(double trackPrice) {
    this.trackPrice = trackPrice;
}

public String getReleaseDate() {
    return releaseDate;
}

public void setReleaseDate(String releaseDate) {
    this.releaseDate = releaseDate;
}

public String getCollectionExplicitness() {
    return collectionExplicitness;
}

public void setCollectionExplicitness(String collectionExplicitness) {
    this.collectionExplicitness = collectionExplicitness;
}

public String getTrackExplicitness() {
    return trackExplicitness;
}

public void setTrackExplicitness(String trackExplicitness) {
    this.trackExplicitness = trackExplicitness;
}

public int getTrackTimeMillis() {
    return trackTimeMillis;
}

public void setTrackTimeMillis(int trackTimeMillis) {
    this.trackTimeMillis = trackTimeMillis;
}

public String getCountry() {
    return country;
}

public void setCountry(String country) {
    this.country = country;
}

public String getCurrency() {
    return currency;
}

public void setCurrency(String currency) {
    this.currency = currency;
}

public String getPrimaryGenreName() {
    return primaryGenreName;
}

public void setPrimaryGenreName(String primaryGenreName) {
    this.primaryGenreName = primaryGenreName;
}

public int getCollectionId() {
    return collectionId;
}

public void setCollectionId(int collectionId) {
    this.collectionId = collectionId;
}

public String getCollectionName() {
    return collectionName;
}

public void setCollectionName(String collectionName) {
    this.collectionName = collectionName;
}

public String getCollectionCensoredName() {
    return collectionCensoredName;
}

public void setCollectionCensoredName(String collectionCensoredName) {
    this.collectionCensoredName = collectionCensoredName;
}

public String getCollectionViewUrl() {
    return collectionViewUrl;
}

public void setCollectionViewUrl(String collectionViewUrl) {
    this.collectionViewUrl = collectionViewUrl;
}

public int getDiscCount() {
    return discCount;
}

public void setDiscCount(int discCount) {
    this.discCount = discCount;
}

public int getDiscNumber() {
    return discNumber;
}

public void setDiscNumber(int discNumber) {
    this.discNumber = discNumber;
}

public int getTrackCount() {
    return trackCount;
}

public void setTrackCount(int trackCount) {
    this.trackCount = trackCount;
}

public int getTrackNumber() {
    return trackNumber;
}

public void setTrackNumber(int trackNumber) {
    this.trackNumber = trackNumber;
}
}

VideoFragment.java

private void load(){

    Retrofit retrofit = RetrofitClient.getInstance();
    ApiService apiService = retrofit.create(ApiService.class);

    JsonObject jsonObject = new JsonObject();
    jsonObject.addProperty("term","Michael+jackson");
    jsonObject.addProperty("media","musicVideo");

    Call<List<Video>> videoList = apiService.getTracks(jsonObject);

    videoList.enqueue(new Callback<List<Video>>() {
        @Override
        public void onResponse(Call<List<Video>> call, Response<List<Video>> response) {

            if(response.body() != null){

                Video video = (Video) response.body();
                Log.d("list", String.valueOf(video.getResultCount()));
            }
        }

        @Override
        public void onFailure(Call<List<Video>> call, Throwable t) {

            Log.d("error",t.getMessage());
            Toast.makeText(getActivity(),t.getMessage(),Toast.LENGTH_LONG).show();
        }
    });
}

誰かが私にこのエラーが発生する理由を教えてください。助けていただければ幸いです。

ありがとう

セルゲイトノイアン

私が理解したように、POSTではなくGETリクエストを行いたいと思います。次に、メソッドを次のように変更します。

    @GET("search")
    Call<Video> getTracks(@Query("term") String term, 
       @Query("media") String mediaType);

JSONObjectを作成する必要はなく、検索パラメータを文字列として渡すだけです。

Call<Video> video = apiService.getTracks("Michael+jackson", "musicVideo");

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Android-Retrofit2を使用してJSONをフェッチできません

分類Dev

ReactNativeフェッチを使用してデータを取得できません

分類Dev

beautifulsoupを使用して特定のデータをフェッチできません

分類Dev

QueryBuilders.termQueryを使用してデータをフェッチできません

分類Dev

外部データソースを使用してデータをフェッチできません

分類Dev

URLのクエリパラメータを使用してretrofit2でデータをフェッチする方法は?

分類Dev

Androidで[ボレーライブラリを使用して] JSONデータをフェッチできません

分類Dev

iPadminiを使用してAngularアプリケーションでデータをフェッチできません

分類Dev

Notepad ++は$ _POSTメソッドを使用してPOSTMANからデータをフェッチできません

分類Dev

ReactJSアプリはRESTAPI呼び出しを使用してデータをフェッチできません

分類Dev

jqueryを使用してmongodbから最新のデータをフェッチできません

分類Dev

javascriptを使用してWebURLからテキストデータをフェッチできません

分類Dev

VueとAxiosを使用してAPIからデータをフェッチできません

分類Dev

PHPプログラムを使用してMySQL行データをフェッチできません

分類Dev

Nodejsを使用してMongodbからデータをフェッチできません

分類Dev

SPARQLクエリを使用してdbpediaからデータをフェッチできません

分類Dev

React Context APIを使用している間、データをフェッチできません

分類Dev

データをフェッチしますが、Angularjs Springを使用してHTMLでデータを表示できません

分類Dev

Spring BootはMySQLデータベースからデータをフェッチして表示できません

分類Dev

Elequent PolymorphicRelationshipでデータをフェッチできません

分類Dev

Eclipseでデータをフェッチできません

分類Dev

角度を使用して値をフェッチできません

分類Dev

ドロップダウン値を介してデータをフェッチできません

分類Dev

Pythonでimapを使用してメールをフェッチできません

分類Dev

Retrofit2を使用したRxJava2-HttpLoggingInterceptorを使用してログを取得できません

分類Dev

FetchResultControllerがデータをフェッチできません

分類Dev

FacebookSDKからデータをフェッチできません

分類Dev

jsonデータをフェッチできません

分類Dev

androidedittextはデータをフェッチできません

Related 関連記事

  1. 1

    Android-Retrofit2を使用してJSONをフェッチできません

  2. 2

    ReactNativeフェッチを使用してデータを取得できません

  3. 3

    beautifulsoupを使用して特定のデータをフェッチできません

  4. 4

    QueryBuilders.termQueryを使用してデータをフェッチできません

  5. 5

    外部データソースを使用してデータをフェッチできません

  6. 6

    URLのクエリパラメータを使用してretrofit2でデータをフェッチする方法は?

  7. 7

    Androidで[ボレーライブラリを使用して] JSONデータをフェッチできません

  8. 8

    iPadminiを使用してAngularアプリケーションでデータをフェッチできません

  9. 9

    Notepad ++は$ _POSTメソッドを使用してPOSTMANからデータをフェッチできません

  10. 10

    ReactJSアプリはRESTAPI呼び出しを使用してデータをフェッチできません

  11. 11

    jqueryを使用してmongodbから最新のデータをフェッチできません

  12. 12

    javascriptを使用してWebURLからテキストデータをフェッチできません

  13. 13

    VueとAxiosを使用してAPIからデータをフェッチできません

  14. 14

    PHPプログラムを使用してMySQL行データをフェッチできません

  15. 15

    Nodejsを使用してMongodbからデータをフェッチできません

  16. 16

    SPARQLクエリを使用してdbpediaからデータをフェッチできません

  17. 17

    React Context APIを使用している間、データをフェッチできません

  18. 18

    データをフェッチしますが、Angularjs Springを使用してHTMLでデータを表示できません

  19. 19

    Spring BootはMySQLデータベースからデータをフェッチして表示できません

  20. 20

    Elequent PolymorphicRelationshipでデータをフェッチできません

  21. 21

    Eclipseでデータをフェッチできません

  22. 22

    角度を使用して値をフェッチできません

  23. 23

    ドロップダウン値を介してデータをフェッチできません

  24. 24

    Pythonでimapを使用してメールをフェッチできません

  25. 25

    Retrofit2を使用したRxJava2-HttpLoggingInterceptorを使用してログを取得できません

  26. 26

    FetchResultControllerがデータをフェッチできません

  27. 27

    FacebookSDKからデータをフェッチできません

  28. 28

    jsonデータをフェッチできません

  29. 29

    androidedittextはデータをフェッチできません

ホットタグ

アーカイブ