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

Apurv

URLを使用してJSONファイルを取得しようとしていますが、アプリケーションがクラッシュします。

JSONファイルAPI

MainActivity.java

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

ApiService service = retrofit.create(ApiService.class);

// Logs show error is in the code below
service.getPopulationData(new Callback<Flag> (){
        @Override
        public void onResponse(Call<Flag> call, Response<Flag> response) {
            Log.d("JSONData", response.body().toString());
        }

        @Override
        public void onFailure(Call<Flag> call, Throwable t) {
            Log.d("JSONData", t.getMessage());
        }
    });

ApiService.java

public interface ApiService {
    String BASE_URL = "http://www.androidbegin.com/";

    @GET("tutorial/jsonparsetutorial.txt")
    public void getPopulationData(Callback<Flag> callback) ;
}

Flag.java

public class Flag {
    private int rank;
    private String country;
    private String population;
    private String flag;

    public int getRank() {
        return rank;
    }

    public void setRank(int rank) {
        this.rank = rank;
    }

    public String getCountry() {
        return country;
    }

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

    public String getPopulation() {
        return population;
    }

    public void setPopulation(String population) {
        this.population = population;
    }

    public String getFlag() {
        return flag;
    }

    public void setFlag(String flag) {
        this.flag = flag;
    }
}

編集:エラーログはここにあります:ログ

私はstackoverflowで言及されている他の解決策を試しましたが、それを正しく行うことができませんでした。

また、JSONファイルのフラグURLのみが必要です。どうやって手に入れるの?

Navneet Krishna

次の2つのpojoクラスが必要になります

JsonResponse.java

    public class JsonResponse {

@SerializedName("worldpopulation")
@Expose
private List<Worldpopulation> worldpopulation = null;

public List<Worldpopulation> getWorldpopulation() {
return worldpopulation;
}

public void setWorldpopulation(List<Worldpopulation> worldpopulation) {
this.worldpopulation = worldpopulation;
}

}

Worldpopulation.java

    public class Worldpopulation {

@SerializedName("rank")
@Expose
private Integer rank;
@SerializedName("country")
@Expose
private String country;
@SerializedName("population")
@Expose
private String population;
@SerializedName("flag")
@Expose
private String flag;

public Integer getRank() {
return rank;
}

public void setRank(Integer rank) {
this.rank = rank;
}

public String getCountry() {
return country;
}

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

public String getPopulation() {
return population;
}

public void setPopulation(String population) {
this.population = population;
}

public String getFlag() {
return flag;
}

public void setFlag(String flag) {
this.flag = flag;
}

}

以下のような改造電話をかけます

service.getPopulationData(new Callback<JsonResponse> (){
    @Override
    public void onResponse(Call<JsonResponse> call, Response<JsonResponse> response) {
        Log.d("JSONData", response.body().toString());
        ArrayList<Worldpopulation> population=new ArrayList(response.body().getWorldpopulation());
    }

    @Override
    public void onFailure(Call<JsonResponse> call, Throwable t) {
        Log.d("JSONData", t.getMessage());
    }
});

**** edited as per requirement****

ApiService.javaを変更します

public interface ApiService {
String BASE_URL = "http://www.androidbegin.com/";

@GET("tutorial/jsonparsetutorial.txt")
Call<JsonResponse> getPopulationData() ;
}

ここで編集したように呼んでください

ApiService service = retrofit.create(ApiService.class);
Call<JsonResponse> call = service.getPopulationData();
call.enqueue(new Callback<JsonResponse> (){
@Override
public void onResponse(Call<JsonResponse> call, Response<JsonResponse> response) {
    Log.d("JSONData", response.body().toString());
    ArrayList<Worldpopulation> population=new ArrayList(response.body().getWorldpopulation());
}

@Override
public void onFailure(Call<JsonResponse> call, Throwable t) {
    Log.d("JSONData", t.getMessage());
}
});

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Androidでretrofit2を使用して@Postリクエストを行うことができません

分類Dev

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

分類Dev

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

分類Dev

Kotlin AndroidでRetrofit2、RxJava2を使用してJSONファイルを読み取る方法

分類Dev

Retrofit 2.0androidで応答としてjson文字列を取得できません

分類Dev

Android < 21 で Retrofit 2 を使用して HTTPS に接続できませんでした

分類Dev

Androidアセットからjsonファイルをフェッチできません

分類Dev

期待されるBEGIN_ARRAYを取得しましたが、Android(java)でRetrofitを使用してjsonをフェッチしようとすると、1行2列のパス$でBEGIN_OBJECTになりました。

分類Dev

Androidの改造でローカルホストからJSONをフェッチできません

分類Dev

Android Oreo8がパッケージをフェッチできません

分類Dev

Retrofit(Android)でキーなしでJSON配列をフェッチする方法は?

分類Dev

Unirestを使用してAndroidでJSONをフェッチしようとしています

分類Dev

AndroidのDBから適切なIDをフェッチできません

分類Dev

Androidでは、AsyncTaskがdoInBackgroundエラーメッセージをフェッチしていません

分類Dev

Retrofit2を使用したAndroidでのHTTPPOSTリクエスト

分類Dev

Retrofit2を使用したパッチリクエストが機能しないAndroid

分類Dev

Android + Retrofit 2 + GSON =インターフェースの引数なしコンストラクターを呼び出すことができません

分類Dev

Retrofit(Android)を使用してネストされたJSONを逆シリアル化することはできません

分類Dev

正しいgoogle-services.jsonファイルを使用してAndroidでFCMプッシュ通知を受信できません

分類Dev

retrofit2を使用してAndroidのサーバーにjsonデータを投稿する方法は?

分類Dev

プラットフォームandroidをフェッチできません:エラー:EACCES

分類Dev

Androidでretrofit2とrxjava2を使用して複数のリクエストを行う方法は?

分類Dev

Kotlinを使用してAndroidでVisualizerを初期化できません

分類Dev

GCMを使用してAndroidにプッシュを送信できません

分類Dev

Ionic:エラー:MacでプラットフォームAndroidをフェッチできませんでしたか?

分類Dev

AndroidでRxJava(+ retrofit2)を使用して3つ以上の並列httpリクエストを実行する方法

分類Dev

AndroidのRetrofit2ライブラリを使用したファイルのアップロード

分類Dev

scringoを使用してAndroidアプリを作成できません

分類Dev

AndroidでFirebaseGoogleAuthを使用してログインできません

Related 関連記事

  1. 1

    Androidでretrofit2を使用して@Postリクエストを行うことができません

  2. 2

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

  3. 3

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

  4. 4

    Kotlin AndroidでRetrofit2、RxJava2を使用してJSONファイルを読み取る方法

  5. 5

    Retrofit 2.0androidで応答としてjson文字列を取得できません

  6. 6

    Android < 21 で Retrofit 2 を使用して HTTPS に接続できませんでした

  7. 7

    Androidアセットからjsonファイルをフェッチできません

  8. 8

    期待されるBEGIN_ARRAYを取得しましたが、Android(java)でRetrofitを使用してjsonをフェッチしようとすると、1行2列のパス$でBEGIN_OBJECTになりました。

  9. 9

    Androidの改造でローカルホストからJSONをフェッチできません

  10. 10

    Android Oreo8がパッケージをフェッチできません

  11. 11

    Retrofit(Android)でキーなしでJSON配列をフェッチする方法は?

  12. 12

    Unirestを使用してAndroidでJSONをフェッチしようとしています

  13. 13

    AndroidのDBから適切なIDをフェッチできません

  14. 14

    Androidでは、AsyncTaskがdoInBackgroundエラーメッセージをフェッチしていません

  15. 15

    Retrofit2を使用したAndroidでのHTTPPOSTリクエスト

  16. 16

    Retrofit2を使用したパッチリクエストが機能しないAndroid

  17. 17

    Android + Retrofit 2 + GSON =インターフェースの引数なしコンストラクターを呼び出すことができません

  18. 18

    Retrofit(Android)を使用してネストされたJSONを逆シリアル化することはできません

  19. 19

    正しいgoogle-services.jsonファイルを使用してAndroidでFCMプッシュ通知を受信できません

  20. 20

    retrofit2を使用してAndroidのサーバーにjsonデータを投稿する方法は?

  21. 21

    プラットフォームandroidをフェッチできません:エラー:EACCES

  22. 22

    Androidでretrofit2とrxjava2を使用して複数のリクエストを行う方法は?

  23. 23

    Kotlinを使用してAndroidでVisualizerを初期化できません

  24. 24

    GCMを使用してAndroidにプッシュを送信できません

  25. 25

    Ionic:エラー:MacでプラットフォームAndroidをフェッチできませんでしたか?

  26. 26

    AndroidでRxJava(+ retrofit2)を使用して3つ以上の並列httpリクエストを実行する方法

  27. 27

    AndroidのRetrofit2ライブラリを使用したファイルのアップロード

  28. 28

    scringoを使用してAndroidアプリを作成できません

  29. 29

    AndroidでFirebaseGoogleAuthを使用してログインできません

ホットタグ

アーカイブ