我有一个与 Spring MVC 集成的 GWT Web 应用程序。我有一个工作完美的控制器,并且经过单元测试以接受 POST 的 JSON 数据并返回 JSON 数据。
在同一个应用程序中,为避免任何 SOP 跨站点域问题,我正在使用 RequestBuilder 进行调用以发布相同的 json 数据,并且我希望返回 JSON 数据。
我创建了一个应该进行调用的基本 java 类,但我有一些问题。这个正在运行的 Web 应用程序在 Eclipse 的 Jetty 中以托管模式运行。我已经对 GWT 如何通过简单的 HTP 请求调用现有的 Web 服务进行了大量研究。
我的单元测试的第一个问题是:
String baseUrl = GWT.getModuleBaseURL();
不工作,我得到:
java.lang.UnsatisfiedLinkError: com.google.gwt.core.client.impl.Impl.getModuleBaseURL()Ljava/lang/String;
我想我知道正确的 URL 应该是什么,所以当我正确地对 url 进行硬编码并执行此代码时:
String url = getRootUrl() + "rest/pendingInvoices/searchAndCount";
System.out.println("PendingInvoiceDataSource: getData: url=" + url);
// Send request to server and catch any errors.
RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, url);
builder.setHeader("Accept", "application/json");
builder.setHeader("Content-type", "application/json");
// builder.setRequestData(requestData);
try
{
System.out.println("PendingInvoiceDataSource: SEND REQUEST: getData: requestData=" + requestData);
Request request = builder.sendRequest(requestData, new RequestCallback()
{
public void onError(Request request, Throwable exception)
{
System.out.println("Couldn't retrieve JSON");
}
@Override
public void onResponseReceived(Request request, Response response)
{
if (200 == response.getStatusCode())
{
// updateTable(JsonUtils.safeEval(response.getText()));
System.out.println("data=" + response.getText());
}
else
{
System.out.println("Couldn't retrieve JSON (" + response.getStatusText() + ")");
}
}
});
}
catch (RequestException e)
{
System.out.println("Couldn't retrieve JSON");
}
我在他的 sendRequest 上收到此错误:
java.lang.UnsatisfiedLinkError: com.google.gwt.xhr.client.XMLHttpRequest.create()Lcom/google/gwt/xhr/client/XMLHttpRequest;
at com.google.gwt.xhr.client.XMLHttpRequest.create(Native Method)
at com.google.gwt.http.client.RequestBuilder.doSend(RequestBuilder.java:383)
at com.google.gwt.http.client.RequestBuilder.sendRequest(RequestBuilder.java:261)
我认为这可能是一个快速修复,或者可能是我忘记的一些小问题,所以我会尝试更多测试,看看我能找到什么。