什么是等效客户端RestyGWT看起来像下面这个简单的GSON示例?

什么是等效客户端RestyGWT看起来像下面这个简单的GSON示例?

问题描述:

问题

由于GSON(GWT JSON-RPC)遇到的几个问题,我想切换到Resty-GWT。下面的例子展示了我的旧设置,然后下面是我的转移尝试。什么是等效客户端RestyGWT看起来像下面这个简单的GSON示例?

数据

这是从代理发送的JSON数据我已经安装:

{"id": 1, "result": ["Planets", "Stars"], "error": null} 

ControlService.java - 如何拨打电话(带GSON)

的类使异步调用:

import com.google.gwtjsonrpc.common.AsyncCallback; 
import com.google.gwtjsonrpc.common.RemoteJsonService; 
import com.google.gwtjsonrpc.common.RpcImpl; 

@RpcImpl(version=RpcImpl.Version.V2_0,transport=RpcImpl.Transport.HTTP_POST) 
public interface ControlService extends RemoteJsonService 
{ 

    public void connectedNames(String [] Names, AsyncCallback<String[]> callback); //FirstExample 

} 

createPanel.java

这是实际调用和接收数据的类:

import com.google.gwtjsonrpc.common.AsyncCallback; 

public class createPanel implements ChangeHandler{ 

    public mainPanel(){ 

     //Some code setting up the panels 
     service_ = GWT.create(ControlService.class); 
     ((ServiceDefTarget) service_).setServiceEntryPoint("http://localhost:3900/services/ControlProxy.py"); //Directs GWT to the proxy 

     service_.connectedNames(new String[0], new AsyncCallback<String[]>() { 

      public void onSuccess(String[] result) 
      { 
        //I now play with the data 
      } 
      public void onFailure(Throwable why) 
      { 
       myList_.addItem("Server error!"); 
      } 
    }); 
    } 
} 

所以我怎么做这跟RestyGWT

我尝试:

testService.java

import javax.ws.rs.Path; 

import org.fusesource.restygwt.client.MethodCallback; 
import org.fusesource.restygwt.client.RestService; 

@Path("http://localhost:3900/services/ControlProxy.py") 
@POST 
public interface testService extends RestService { 

     public void connectedNames(String [] Names, MethodCallback<String[]> callback); 

} 

testCreatePanel.java

public class createPanel implements ChangeHandler{ 

    public mainPanel(){ 

     //Some code setting up the panels 
     service_ = GWT.create(testService.class); 
     testService.connectedNames(cbcNames, callback);//how to extract data from this 
} 

我想你忘记了你的回调实现(也许是别的地方在你的代码,在这种情况下,将它用在你的问题中是有用的)。

MethodCallback是需要实现的接口(匿名如果你想)

所以,你需要有类似

testService.connectedNames(cbcNames, new MethodCallback<String[]>(){ 

    //onSuccess 

    //onFailure 
); 

现在,当你说

这是从代理发送的JSON数据我已设置:{“id”:1,“result”:[“Planets”,“Stars”],“error”:null}

你的意思是你发布的东西是服务器的回答,还是你发布到服务器的内容?

在这两种情况下,该对象看起来都不像String []。在您声明的restService中,您发送了一个String []作为有效负载Names,并且您声明您将在响应返回时检索String []。

你可以看看本教程为更多的帮助:http://ronanquillevere.github.io/2014/03/16/gwt-rest-app.html

+0

我的意思是,当你上传到服务器上,这是它如何响应。我错过了成功,我删除了String [],用Object替换它 – fiz