什么是等效客户端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
我的意思是,当你上传到服务器上,这是它如何响应。我错过了成功,我删除了String [],用Object替换它 – fiz