Hello,
Miután a SOAP-al feladtam a küzdelmet összeraktam egy REST service-t és annak a metódusait hívogatnám.
A probléma az, hogy a Date típusú mezőknél elszáll az alábbi hibával.
org.springframework.http.converter.HttpMessageNotReadableException: Could not read [class com.example.sfeher.myapplication.HrpEventsHelper]; nested exception is java.text.ParseException: Unparseable date: "2015-09-15T00:00:00+02:00" (at offset 10)
A vágyam az, hogy lássak egy működő példát RestTemplate-re, amivel egy xml-be alakított entity-t vissza tudok alakítani kliens oldalon ugyanolyan entity-be.
A lehető legegyszerűbben ha lehet.
Köszönöm!
-------------------------------------------------------------------
Ez itt a service interfész
@Path("/")
@WebService(name="HrpRESTService", targetNamespace="http://ws.xxx.hu/rest")
@Secured("ROLE_WS")
public interface HrpRESTService {
@Path("/get")
@POST
@Produces({MediaType.APPLICATION_XML})
public Response showMe();
}
illetve az implementáló osztályból a metódus.
@Override
public Response showMe() {
customBo.getDaoSession().beginTransaction();
List<HrpEvents> l=customBo.findAll(HrpEvents.class);
customBo.getDaoSession().getTransaction().commit();
//GenericEntity<List<HrpEvents>> ge=new GenericEntity<List<HrpEvents>>(l){};
HrpEventsHelper helper=new HrpEventsHelper();
helper.setTitle(l.get(0).getTitle());
helper.setUrgency(l.get(0).getUrgency());
helper.setEventDate(l.get(0).getEventDate());
return Response.ok(helper).build();
}
Kliens oldalon Android Stúdió a következő lib-ekkel
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.fasterxml.jackson.core:jackson-core:2.6.2'
compile 'com.fasterxml.jackson.core:jackson-databind:2.6.2'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.6.2'
compile 'org.springframework.android:spring-android-rest-template:1.0.1.RELEASE'
compile 'com.hannesdorfmann:httpkit-simple-xml:1.5.5'
}
A releváns rész a kódból:
headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
headers.setAccept(Arrays.asList(MediaType.APPLICATION_XML));
map = new LinkedMultiValueMap<String, String>();
map.add("access_token", tokenMap.get("access_token"));
request = new HttpEntity<MultiValueMap<String, String>>(map, headers);
messageConverters = new ArrayList<HttpMessageConverter<?>>();
messageConverters.add(new SimpleXmlHttpMessageConverter());
messageConverters.add(new FormHttpMessageConverter());
restTemplate.setMessageConverters(messageConverters);
HrpEventsHelper response=restTemplate.postForObject(apiURL, request, HrpEventsHelper.class);
System.out.println(response.getTitle());
A helper osztályom:
package com.example.sfeher.myapplication;
import java.io.Serializable;
import java.util.Date;
/**
*
* @author sfeher
*/
public class HrpEventsHelper implements Serializable {
private String title;
private String urgency;
Date eventDate;
public HrpEventsHelper() {
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getUrgency() {
return urgency;
}
public void setUrgency(String urgency) {
this.urgency = urgency;
}
public Date getEventDate() {
return eventDate;
}
public void setEventDate(Date eventDate) {
this.eventDate = eventDate;
}
}