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