所以我目前正在尝试使用 JsonpRequestBuilder API 来尝试访问远程文件,但是我只是使用 google 网页链接进行测试,并且遇到了超时异常。不太确定我在这里缺少什么。任何帮助将不胜感激。
package com.webapp.client;
<p>import java.util.logging.Logger;</p>
<p>import com.webapp.client.ExcelFileJavascriptObject;
import com.google.gwt.jsonp.client.JsonpRequestBuilder;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;</p>
<p>public class DataHttpRequest {</p>
<pre><code>private final String url2 = "http://www.google.ca";
private Logger logger = Logger.getLogger("DataRequest.java");
public void retrieveFile() {
JsonpRequestBuilder builder = new JsonpRequestBuilder();
builder.requestObject(url2,
new AsyncCallback<ExcelFileJavascriptObject>() {
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
logger.severe(caught.getMessage());
logger.severe(caught.toString());
}
@Override
public void onSuccess(ExcelFileJavascriptObject result) {
// TODO Auto-generated method stub
Window.alert(result.toString());
}
});
}
public void onModuleLoad() {
retrieveFile();
}
</code></pre>
}
package com.webapp.client;
<p>import com.google.gwt.core.client.JavaScriptObject;</p>
<p>public class ExcelFileJavascriptObject extends JavaScriptObject{
protected ExcelFileJavascriptObject(){</p>
<pre><code>}
</code></pre>
}
最佳答案
您正在破坏 ' Some Origin Policy ' ajax 限制。如果您的 GWT 应用程序部署在“http://www.google.ca”,则只能使用 Ajax 下载该文件。 ' 我想这不是,不是吗?
从不同域获取信息的唯一方法是:使用 ' JSONP ' 就像您尝试使用的那样,或者 ' CORS ',在这两种情况下,其他域都应该与您的应用程序达成协议(protocol),以便在您想要使用 CORS 的情况下设置适当的 header ,或者如果您想要 JSONP,则为了用回调包装响应,它是什么您尝试请求的网址没有发生这种情况。
如果你想探索这两种方法,这个Ajax page我为 gwtquery 项目编写的内容可能会有用。
关于java - JsonpRequestBuilder访问google网页超时异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19417006/