2017-05-23 11 views
-1

URLリンク:http://www.factsplanet.info/cities.php 方法レトロフィット エラー:java.lang.IllegalArgumentExceptionがレトロフィットエラー - java.lang.IllegalArgumentExceptionが

メインクラス

public class MainActivity extends AppCompatActivity { 
    Retrofit retrofit; 
    Factory service; 

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

     retrofit = new Retrofit.Builder() 
       .baseUrl("https://factsplanet.info/") 
       .build(); 

     service = retrofit.create(Factory.class); 

     Call<ThisIsPojo> call = service.getnames(); 

     call.enqueue(new Callback<ThisIsPojo>() { 
      @Override 
      public void onResponse(Response<ThisIsPojo> response, Retrofit retrofit) { 
       Toast.makeText(MainActivity.this, response.body().getData().get(1).getCountry(), Toast.LENGTH_SHORT).show(); 
      } 

      @Override 
      public void onFailure(Throwable t) { 

      } 
     }); 
    } 
} 

インターフェイスクラス:

public interface Factory { 

@GET ("http://www.factsplanet.info/cities.php") 
    Call<ThisIsPojo> getnames(); 
} 

POJOクラス:

パブリッククラスThisIsPojo {

private List<Datum> data = null; 
    private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 

    public List<Datum> getData() { 
     return data; 
    } 

    public void setData(List<Datum> data) { 
     this.data = data; 
    } 

    public Map<String, Object> getAdditionalProperties() { 
     return this.additionalProperties; 
    } 

    public void setAdditionalProperty(String name, Object value) { 
     this.additionalProperties.put(name, value); 
    } 

} 

エラーは言う: java.lang.RuntimeException:アクティビティを開始できません

java.lang.IllegalArgumentExceptionが:ためのコンバータを作成できませんメソッドfactory.getnamesのapp.com.alphaapps.android.suntest.pojo.ThisIsPojo

+1

の下をご覧ください。 –

+0

Pojoのクラスコードを表示してください。 –

+0

変換器がありませんnew Retrofit.Builder().. baseUrl( "https://factsplanet.info/").addConverterFactory(GsonConverterFactory.create()) ' – Raghunandan

答えて

1

このようにそれを修正します。

retrofit = new Retrofit.Builder().baseUrl("https://factsplanet.info/").addConverterFactory(GsonConverterFactory.create()).build(); 
0

こんにちは、それは

サービスインタフェース

public interface ServiceInterface { 
    @GET(HttpConstants.CITIESJSON) 
    Call<GeonameResponse>getCities(@Query("north")double north, @Query("south")double south, @Query("east")double east, @Query("west")double west, @Query("lang")String lang, @Query("username")String username); 

    @GET(HttpConstants.USERDATAJSON) 
    Call<ListData>taskData(@Query("method")String method,@Query("stdID")int stdID); 

    @POST(HttpConstants.USERDATAJSON) 
    Call<ListData> saveUser(@Body DataPojo pojo); 
} 

を助けることができる場合は、この方法を試してみてくださいServiceClass

public class ServiceClass { 
    static ServiceInterface serviceInterface; 
// public static final String baseUrl= HttpConstants.BASE_URL_GEONAME; 
    public static final String baseUrl= HttpConstants.baseUrl; 

    public static ServiceInterface connection(){ 
     if(serviceInterface==null){ 
      HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); 
      interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); 
      OkHttpClient client = new OkHttpClient(); 
      client.interceptors().add(new Interceptor() { 
       @Override 
       public Response intercept(Chain chain) throws IOException { 
        Response response=chain.proceed(chain.request()); 
        return response; 
       } 
      }); 
      Retrofit retrofit = new Retrofit.Builder() 
        .client(client) 
        .addConverterFactory(GsonConverterFactory.create()) 
        .baseUrl(baseUrl) 
        .build(); 
      serviceInterface=retrofit.create(ServiceInterface.class); 
     } 
     return serviceInterface; 
    } 
} 

全例えば実装

public void addUser(DataPojo pojo){ 
     ServiceInterface serviceInterface=ServiceClass.connection(); 
     Call<ListData> call=serviceInterface.saveUser(pojo); 
     call.enqueue(new Callback<ListData>() { 
      @Override 
      public void onResponse(Response<ListData> response, Retrofit retrofit) { 
       Log.v("@@@Response",""+response.toString()); 
       if(response.isSuccess()){ 
        Toast.makeText(AddNewUser.this,"User Added",Toast.LENGTH_LONG).show(); 
        supportFinishAfterTransition(); 
       } 
      } 

      @Override 
      public void onFailure(Throwable t) { 
       Log.v("@@@Failure"," Message"+t.getMessage()); 
      } 
     }); 
    } 

あなたは、コンバータの工場を登録する必要がリンク https://github.com/pratikvyas1991/NetworkingExample/tree/master/app/src/main/java/com/ims/tasol/networkingexample

関連する問題