gpt4 book ai didi

java - GWT 和 REST (jax-rs)

转载 作者:行者123 更新时间:2023-12-01 15:58:48 24 4
gpt4 key购买 nike

我有一个项目,您可以在其中请求 jax-rs 提供的资源在 json格式。当我查询其余 URL json 时,浏览器中的一切正常工作。出现。

现在我希望我的 GWT 项目请求这些资源并处理它们并在我的界面中显示它们。我发现这样做的最简单方法是使用请求构建器和覆盖层。代码较低。问题是,当代码运行时,它似乎永远不会进入实际的 RequestCallback() 。状态字符串永远不会改变。我认为这可能是一个 SOP,所以我添加了 <add-linker name="xs"/>但仍然不起作用。有理想吗?

    package com.workoutcell.client;
//import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArray;
import com.google.gwt.http.client.*;
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;

/**
*
* @author
*/

public class RestToInfoSession{

String queryReturn = null;
JsArray<InfoJSO> arrayOfInfo = null;
String host = "http://localhost:8080/mysite";
String restModule = "/calendar/getinfo";
String id = null;
String year = null;
String month = null;
String status = "Not Initialized";

public RestToInfoSession(String id, String year, String month){

this.id =id;
this.year = year;
this.month = month;
String url = host + restModule + "/"+this.id + "/"+this.year + "/"+this.month;
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);


try {
status = "Initialized at Url " + builder.getUrl();
Request request = builder.sendRequest(null, new RequestCallback() {

public void onError(Request request, Throwable exception) {
// Couldn't connect to server (could be timeout, SOP violation, etc.)
status = "Error on connecting to Server";
}


public void onResponseReceived(Request request, Response response) {
if (200 == response.getStatusCode()) {
// arrayOfInfo = jsonToJsArray(response.getText());
status = "JSON has been Fetched. Result is:" + response.getText();
} else if(0 == response.getStatusCode()) {
status = "Error is 0";
} else {
status = "Error in JSON Request:" + response.getStatusCode();
//response.getStatusText();
}
}

});

} catch (RequestException ex) {
status = "Error in Request Builder Startup";
}

}

//get an jso object in array
private final native JsArray<InfoJSO> jsonToJsArray(String json) /*-{
return eval(json);
}-*/;

public JsArray<InfoJSO> getInfoArray (){

return arrayOfInfo;
}

}

更新:我的问题与 Referring to a non-final variable data inside an inner class 相同。我不知道异步调用工作机制。我还是不知道怎么传我的response.getText()更新不属于我的 RestToInfoSession 类的标签有什么想法吗?

最佳答案

考虑使用RestyGWT项目。它将使得调用 JAXRS JSON 资源就像使用 GWT-RPC 一样简单。另外,您通常可以在客户端重用来自服务器端的相同请求响应 DTO。

关于java - GWT 和 REST (jax-rs),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4429484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com