使用RestyGWT发布此消息更容易吗?
问题描述:
问题
目前我正在用Resty-GWT替换GSON,以使我的JSON-RPC调用由于与GSON的各种烦恼。它的工作原理正是我想要它,但我无法弄清楚如何发送等我的消息比在String
:使用RestyGWT发布此消息更容易吗?
String names_ = "{\"jsonrpc\":\"2.0\",\"method\":\"RegisterValues\",\"params\":[[\"FirstValue\"],\"id\":2}";
我想这样做是一个更聪明的办法,所以我不必须写出所有这些值。但最重要的是,我想要一个简单的方法来插入这些参数。简单地在我的请求载荷中声明这些属性的一些方法。
电流法
这String
通过这个呼叫发送:
testService.RegisterValues(names_, new MethodCallback<testService.Response>(){
@Override
public void onFailure(Method method, Throwable exception) {
// TODO Auto-generated method stub
Window.alert(exception.getMessage().toString());
}
@Override
public void onSuccess(Method method, testService.Response response) {
// TODO Auto-generated method stub
Window.alert("Hello" + response.getResult().toString());
}
});
的testService
类在这里找到:
import javax.ws.rs.POST;
import javax.ws.rs.Produces;
import org.fusesource.restygwt.client.MethodCallback;
import org.fusesource.restygwt.client.RestService;
public interface testService extends RestService {
@Produces("application/json")
@POST
public void RegisterValues(String names_, MethodCallback<Response> callback);
}
回调,然后发送到这个响应类,其中我可以轻松地对数据进行反序列化,解压缩(虽然在这里并不重要)):
public class Response {
private int id;
private Map<String, Map<String, Integer>> result;
private String error;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
//...etc.
答
首先你的json看起来不对,你有一个空的方括号([)没有关闭?
然后,您必须完成与您的对象响应完全相同的事情。你需要创建一个代表你名字的对象_ Resty会为你序列化它。
像
public class Params {
String jsonrpc;
String method;
String[] params;
String id;
}
是的,对不起,我错过了断括号(这只是复制并从我的Eclipse项目粘贴)。有没有办法只是创建一个JSON格式的Java字符串来传递它? – fiz
我也必须道歉,我完全不了解这个。 – fiz
我不明白你现在正在使用带有json对象的字符串,但是你不想使用一个对象?你想使用什么类型的对象? –