使用RestyGWT发布此消息有更简单的方法吗?

时间:2014-04-01 14:59:27

标签: java gwt json-rpc resty-gwt

问题

目前,由于与GSON的各种烦恼,我正在用Resty-GWT取代GSON来进行JSON-RPC呼叫。它完全符合我的要求,但除了String之外,我无法弄清楚如何发送消息:

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.

1 个答案:

答案 0 :(得分:1)

首先你的json看起来不正确你有一个开放的方括号([]没有关闭?

然后你必须完成与你的对象Response完全相同的事情。您需要创建一个代表您姓名的对象_ Resty将为您序列化它。

类似

public class Params {
  String jsonrpc;
  String method;
  String[] params;
  String id;
}