我試圖從我的客戶端發送數據到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以防萬一沒幫我...
好吧,現在我已將我所有的gradle依賴關係更新爲最新的jackson構建版本。 – 2014-10-07 07:53:10