2016-04-01 9 views
0

MainActivityにBase URLがあります。私は、retrofitを使用してサーバーからjsonファイルを取得しようとしています。ここでretrofit2を使用してjsonファイルを取得する

はMainActivity

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     if (item.getItemId() == R.id.action_get_data) { 
      if (isOnline()) { 
       requestData(); 

      } else { 
       Toast.makeText(this, "Network isn't available", Toast.LENGTH_LONG).show(); 
      } 
     } 
     return false; 
    } 

    private void requestData() { 

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

     FlowersAPI service = retrofit.create(FlowersAPI.class); 
     Call<List<Flower>> call = service.getFeed(); 

     call.enqueue(new Callback<List<Flower>>() { 
      @Override 
      public void onResponse(Call<List<Flower>> call, Response<List<Flower>> response) { 
         flowerList = response.body(); 
       updateDisplay(); 
      } 

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

      } 

     }); 

    } 

    protected void updateDisplay() { 
     //Use FlowerAdapter to display data 
     FlowerAdapterPicaso adapter = new FlowerAdapterPicaso(this, 
       R.layout.item_flower, flowerList); 
      setListAdapter(adapter); 
    } 

そして、ここでのコードの一部です私のインターフェースは

public interface FlowersAPI { 

    @GET("/feeds/flowers.json") 
    public Call<List<Flower>> getFeed(); 

} 

である私は、リストビューにデータがない、すなわち、結果を取得することができません、他のすべての例では、改造を示し以前のバージョンから、私の他の質問は? GsonConverterFactoryを追加することは必須ですか?

+0

最新のバージョンのレトロフィットを使用していますが、他のいくつかの例のようにOkHttpClientを使用する必要がありますか? –

+0

'コンバーターを作成できません '...なぜGsonConverterFactoryにコメントしましたか? –

+0

GsonConverterFactoryを使用してもエラーが表示される - java.lang.NoClassDefFoundError:Lcom/google/gson/Gsonの解決に失敗しました。 at retrofit2.converter.gson.GsonConverterFactory.create(GsonConverterFactory.java:42) at com.hanselandpetal.catalog.MainActivity.requestData(MainActivity.java:69) –

答えて

1

APIサービスを作成する前に、リクエストにHTTPクライアントが欠落しています。

Retrofit retrofit = new Retrofit.Builder() 
     .baseUrl(ENDPOINT) 
     .addConverterFactory(GsonConverterFactory.create()) 
     .client(new OkHttpClient.Builder().build()) 
     .build(); 
関連する問題