XML parse-olás (REST API response)

Fórumok

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;
    }
}