Hi

I have a GWT app running on GAE. I use GWT edition and the representation 
between client and server is [application/x-java-serialized-object+gwt,UTF-8]. 
Some of the calls must be proxied to Zendesk REST API, see 
http://www.zendesk.com/support/api/rest-introduction

I have succesfully proxied calls to search for tickets like this :

public interface TicketSearchResource {
        @Get
        Ticket[] search();
}

public class TicketSearchServerResource extends AbstractZendeskServerResource 
implements TicketSearchResource {
        @Override
        public Ticket[] search() {
                Form form = getRequest().getResourceRef().getQueryAsForm();
                String query = 
form.getFirstValue(TicketSearchResourceProxy.PARAM_QUERY);
                String target = getZendeskUri() + 
"/search.json?query=type:ticket" + (query == null ? "" : "+" + query);
                ClientResource queryResource = new ClientResource(target);
                queryResource.setChallengeResponse(getChallengeResponse());
                TicketSearchResource ticketSearch = 
queryResource.wrap(TicketSearchResource.class);
                return ticketSearch.search();
        }
}

The returned entities from Zendesk are represented in JSON, unmarshalled and 
then turned into [application/x-java-serialized-object+gwt,UTF-8] to send to 
the GWT client.
So far so good.

Now I want to post to the Zendesk API, and I started from the same approach. I 
defined my resource like this :

public interface TicketsResource {

        @Post
        void create(Ticket ticket);

}

And I also defined the ZendeskResource in a separate interface, to make sure 
Restlet knows it must send JSON.

public interface ZendeskTickets {

        @Post("json")
        public void create(Ticket ticket);

}

Then my implementation to proxy this call from my TicketsResource to 
ZendeskTickets looks like this :

public class TicketsServerResource extends AbstractZendeskServerResource 
implements TicketsResource {

        @Override
        public void create(Ticket ticket) {
                String target = getZendeskUri() + "/tickets.json";
                ClientResource createTicketResource = new 
ClientResource(target);
                
createTicketResource.setChallengeResponse(getChallengeResponse());
                ZendeskTickets zendeskTickets = 
createTicketResource.wrap(ZendeskTickets.class);
                zendeskTickets.create(ticket);
        }

}

But no matter what [application/x-java-serialized-object+gwt,UTF-8] is being 
send to the ZENDESK api resulting in BAD REQUEST. I have been investigating 
this using Wireshark to see the traffic.
Is my approach faulty ???


Thx

Koen

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2892105

Reply via email to