我正在尝试使用 JSOPRequestBuilder 从 GWT 调用 Restful WS。我有一个在链接中报告的类似问题
但是,我想不出解决方案。请尽早帮助我。
我来自服务器的 JAX-WS 资源代码片段
@GET
@Produces(MediaType.APPLICATION_JSON)
public DealerAddress getDealerAddress(@QueryParam("dealerId") String sDealerId) {
DealerAddress dlrAd = new DealerAddress("test", "test", "test", "test", 10, new Date(), new Date());
return dlrAd;
}
Jersey 返回一个 DealerAddress 的 JSON 对象。
现在当我在浏览器中尝试请求时,rest URL "https://127.0.0.1:8181/application/rest/OrderManagementResource?alt=json-in-script&dealerId=DLR1" 工作得很好。
它甚至适用于 GWT 的 RequestBuilder 方法,但不适用于 JSONPRequestBuilder 方法。
使用 JSONPRequestBuilder 从 GWT 调用 WS 的代码片段
JsonpRequestBuilder jsonPReqBuilder = new JsonpRequestBuilder();
jsonPReqBuilder.setTimeout(100000);
jsonPReqBuilder.setCallbackParam("callback");
jsonPReqBuilder.requestObject("https://127.0.0.1:8181/application/rest/OrderManagementResource?alt=json-in-script&dealerId=DLR1" , new AsyncCallback<DealerAddressJSON>() {
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
caught.printStackTrace();
Window.alert("Inside error"+caught.getLocalizedMessage());
}
@Override
public void onSuccess(DealerAddressJSON result) {
// TODO Auto-generated method stub
Window.alert("Inside success"+result);
}
});
其中 DealerAddressJSON 是一个 JavaScriptObject 类型类。
我可以看到我的 JAX Rest 资源被调用并说从服务器返回。
此外,我可以在 Firebug 中看到响应来自浏览器但失败并出现异常“未知令牌:”最后我总是得到一个超时异常。现在我有一个很大的问题,我们从 JAX-RS 资源返回 JSON 的方式是服务器中的问题还是 JSONPRequestBuilder 调用过程有问题?我无法理解某些链接在此问题上解释的回调更改。
请帮助我。