2014-10-06 12 views
0

我試圖從我的客戶端發送數據到rest-webserver。 我的客戶使用Spring的Resttemplate for Android。POST是不可能的,因爲標準串行器(傑克遜)的實例化失敗

請求對象的作品,但是張貼運行中出現以下錯誤:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.erdi.mobilefinalneu/com.example.erdi.mobilefinalneu.UploadActivity}: java.lang.IllegalStateException: Failed to instantiate standard serializer (of type com.fasterxml.jackson.databind.ser.std.NullSerializer): access to constructor not allowed 

Caused by: java.lang.IllegalStateException: Failed to instantiate standard serializer (of type com.fasterxml.jackson.databind.ser.std.NullSerializer): access to constructor not allowed 

相關的代碼是:

restTemplate = new RestTemplate(); 
    restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); 
    //restTemplate.getMessageConverters().add(new MappingJacksonHttpMessageConverter()); 
    StrictMode.ThreadPolicy policy = new 
      StrictMode.ThreadPolicy.Builder() 
      .permitAll().build(); 
    StrictMode.setThreadPolicy(policy); 

    HttpHeaders headers = new HttpHeaders(); 
    headers.setContentType(MediaType.APPLICATION_JSON); 

    HttpEntity<RecordingModel> entity = new HttpEntity<RecordingModel>(recordingToPost,headers); 

    restTemplate.put(url + "sportsupload/", entity); 
    //ResponseEntity<RecordingModel> out = restTemplate.exchange(url + "sportsupload/", HttpMethod.POST, entity 
    //  , RecordingModel.class); 
    //restTemplate.postForLocation(url + "sportsupload/", recordingToPost); 

(你可以在註釋行看到,我嘗試不同的方法發佈一個對象,但都有這些錯誤信息)

我的RecordingModel對象如下所示:

@JsonIgnoreProperties(ignoreUnknown = true) 
//@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) 
public class RecordingModel { 
private String upload_date; 
private String recording_date; 
private String name; 
private String user; 
private String video; 
private List<String> sensors = new ArrayList<String>(); 

public String getName(){ 
    return name; 
} 

public List<String> getSensors() { 
    return sensors; 
} 

public String getRecording_date() { 
    return recording_date; 
} 

public String getUpload_date() { 
    return upload_date; 
} 

public String getUser() { 
    return user; 
} 

public String getVideo() { 
    return video; 
} 

public void getRecordingDetails(){ 
    if(upload_date != null){ 
     Log.d("RecordingModel", upload_date); 
    } 
    if(recording_date != null){ 
     Log.d("RecordingModel", recording_date); 
    } 
    if(name != null){ 
     Log.d("RecordingModel", name); 
    } 
    if(user != null){ 
     Log.d("RecordingModel", user); 
    } 
    if(video != null){ 
     Log.d("RecordingModel", video); 
    } 
    for(String sensor : sensors){ 
     Log.d("RecordingModel", sensor); 
    } 
} 

public void setName(String name) { 
    this.name = name; 
} 

public void setRecording_date(String recording_date) { 
    this.recording_date = recording_date; 
} 

public void setSensors(List<String> sensors) { 
    this.sensors = sensors; 
} 

public void setUpload_date(String upload_date) { 
    this.upload_date = upload_date; 
} 

public void setUser(String user) { 
    this.user = user; 
} 

public void setVideo(String video) { 
    this.video = video; 
} 

}

正如你所看到的,我試圖用JSONSerialize那裏,但也沒有工作。

有沒有人知道我做錯了什麼?谷歌搜索/ Stackoverflowing以防萬一沒幫我...

+0

好吧,現在我已將我所有的gradle依賴關係更新爲最新的jackson構建版本。 – 2014-10-07 07:53:10

回答

0

,而不是@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)

嘗試

@JsonInclude(JsonInclude.Include.NON_NULL)

取決於Jacson version you use, it may be different

+0

不幸的是,這會導致相同的錯誤消息。 – 2014-10-07 07:26:35