2016-07-20 2 views
0

Retrofit 2에서 PUT 메시지 본문 내용으로 RealmObject를 사용하려고합니다. JsonSerializer로 사용자 정의 Gson을 구현했으며 Retrofit 외부에서 올바르게 작동하지만 아직 객체를 가져 오지 않습니다. 요청 본문의 데이터. 개조 및 GSON에 대한
Gradle을 구축 :
Realm 객체를 Retrofit 2로 전달 PUT 요청 본문

compile 'com.google.code.gson:gson:2.6.2' 
compile 'com.squareup.retrofit2:retrofit:2.1.0' 
compile 'com.squareup.retrofit2:converter-gson:2.1.0' 

개조 서비스 :

public interface LogstashRetrofitService { 
    @PUT(LOGSTASH_SERVER_PATH) 
    Call<ResponseBody> putLogstashMessage(@Body LogstashMessage logstashMessage); 
} 


건물 개조 :

Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl(LOGSTASH_SERVER_HOST) 
      .addConverterFactory(GsonConverterFactory.create(RealmObjectGsonBuilder.getRealmGson())) 
      .client(httpClient.build()) 
      .build(); 
logstashRetrofitService = retrofit.create(LogstashRetrofitService.class); 
logstashRetrofitService.putLogstashMessage(logstashMessage).enqueue(new Callback<ResponseBody>() { 
     @Override 
     public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {} 
     @Override 
     public void onFailure(Call<ResponseBody> call, Throwable t) {} 
    }); 
+0

* 요청 본문에 아직 개체 데이터가 없습니다. * 무엇을 얻고 있습니까? –

+0

내가 100 % 확신 할 수는 없지만이 링크를 참조 할 수도 있습니다. https://realm.io/docs/java/latest/#what-is-the-difference-between-a-normal-java-object -and-a-realm-object – iAndroid

+0

어떤 상태 코드를 가지고 있습니까? –

답변

3

GSON이 개체가 기반으로 직렬화하려고 때문이다 필드는 리플렉션을 사용하지만 Realm 인스턴스 데이터는 액세스 만 가능합니다. 프록시 getter setter 메소드를 사용합니다.

GSON 정말 게터/세터를 사용하는 설정이없는 때문에 걱정하지 않기 때문에 관련 공개 문제를 참조하십시오 대신 https://github.com/google/gson/issues/232

이 잭슨 또는 LoganSquare JSON 파서 가능합니다.

또는 RealmObject의 관리되지 않는 사본을 만들어야합니다. realmObject.copyFromRealm()을 사용하여 수행 할 수 있습니다.이 복사본은 영역에서 분리 된 클래스의 전체 복사본을 만듭니다.