gpt4 book ai didi

java - GWT Request Builder 不在生产中工作,但在开发中工作

转载 作者:行者123 更新时间:2023-11-30 11:51:52 25 4
gpt4 key购买 nike

我正在使用 GWT 并创建一个 HTTP 请求,但我在从生产版本访问文件时遇到问题,即使它在开发中工作正常。我的主程序在客户端有以下请求。

static final String dataURL = GWT.getModuleBaseURL() + "interpretData";

public void onModuleLoad() {
requestData(dataURL, new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
RootPanel.get(holderId).add(new Label(error + ": Asynchronous call failed - " + caught.getLocalizedMessage()));
return;
}

public void onSuccess(String JSON){
try{
// code executed on success
} catch (Exception e) {
RootPanel.get(holderId).add(new Label(error + ": " + e.getMessage()));
return;
}
}
});
}

public static void requestData(final String url, final AsyncCallback<String> callback) {
// create a request for the xml data on the server
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);
builder.setCallback(new RequestCallback() {
public void onError(Request request, Throwable exception) {
callback.onFailure(exception);
}

public void onResponseReceived(Request request, Response response) {
try {
final int responseCode = response.getStatusCode() / 100;
if (url.startsWith("file:/") || (responseCode == 2) || (responseCode == 0)){
callback.onSuccess(response.getText());
} else {
callback.onFailure(new IllegalStateException(" Http Error: #" + response.getStatusCode() + " - " + response.getStatusText()));
}
} catch (Throwable e) {
callback.onFailure(e);
}
}
});

在服务器端,我有:

public class interpretData extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{

response.setContentType("application/json");
// code to return a String
}

最后,我的 XML 文件中包含以下内容:

  <servlet>
<servlet-name>interpretData</servlet-name>
<servlet-class>com.gmod.caeli.server.interpretData</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>interpretData</servlet-name>
<url-pattern>/caeli/interpretData</url-pattern>
</servlet-mapping>

最后,我可以从以下位置访问该文件:http://127.0.0.1:8888/caeli/interpretData所以开发版本完全没问题,但我不知道如何让它在生产中工作(我要求生产的 URL 是 file:///~/workspace/Caeli/war/caeli/interpretData)我已经搜索过示例,但我没有找到任何关于我做错了什么的线索。我尝试使用 tomcat 进行设置,但我也遇到了 404 错误。我觉得我遗漏了一些小东西,所以希望这些信息足以让别人注意到错误。

最佳答案

根据我的经验和研究,Web 浏览器无法通过 Ajax 调用、 anchor 标记、javascript 等请求您在生产环境中尝试请求的 URL (file:///...)。它可能是有点困惑/误导,因为您可以将该 URL 手动输入浏览器并获得预期结果,但是浏览器不允许此本地资源请求。

关于java - GWT Request Builder 不在生产中工作,但在开发中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7199556/

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