【问题标题】:Is There an Easier Way to Post this Message with RestyGWT?使用 RestyGWT 是否有更简单的方法来发布此消息?
【发布时间】:2014-05-12 10:45:46
【问题描述】:

问题

由于对 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.

【问题讨论】:

    标签: java gwt json-rpc resty-gwt


    【解决方案1】:

    首先,您的 json 似乎不正确,您的方括号 ([) 未关闭?

    那么你必须做与你的对象响应完全相同的事情。你需要创建一个代表你名字的对象_Resty 会为你序列化它。

    类似

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

    【讨论】:

    • 是的,对不起,我错过了括号(这只是从我的 Eclipse 项目中复制和粘贴的)。有没有办法创建一个 JSON 格式的 Java 字符串来传递它?
    • 我也必须道歉,我对此完全陌生。
    • 我不明白您现在正在使用带有 json 对象的字符串,但您不想使用对象?你想使用什么类型的对象?
    • String 我在页面顶部,而不是写出来,我想轻松(/聪明地)有一种方法来创建它,里面有正确的参数,而不是每次都必须写出那个字符串。然后我想把这个对象放在RegisterValues 里面,让它仍然可以用 GWT 编译。
    • 还有我在InnerParam里放什么?
    猜你喜欢
    • 2021-04-05
    • 2020-03-28
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    相关资源
    最近更新 更多