gpt4 book ai didi

java - 如何从仅提供 JSON 服务的服务器获取 JSONP?

转载 作者:行者123 更新时间:2023-11-30 09:21:17 26 4
gpt4 key购买 nike

我正在用 GWT 编写一个应用程序,它应该从外部服务器获取 JSON。我正在使用 JsonpRequestBuilder 但我总是遇到失败(超时),因为这是一个没有 JSONP 的 JSON。

如果我有自己的服务器,那么我将能够更改响应格式(到 JSONP)。

我可以改变什么让它工作?

我已经用谷歌浏览器的调试器检查过了,我确实如此!得到响应,但不知何故代码落入了 onFailure 方法,我无法使用响应。

String url = "http://api.mobile.endomondo.com/mobile/api/workout/list?authToken=XXXX";

JsonpRequestBuilder jsonp = new JsonpRequestBuilder();
jsonp.setTimeout(100000);
jsonp.setCallbackParam("callback");
jsonp.requestObject(url,
new AsyncCallback<TrainingData>() { // Type-safe!

@Override
public void onFailure(Throwable throwable) {
// Easy to debug! (hopefully)
Window.alert(throwable.getMessage());
}
@Override
public void onSuccess(TrainingData trd) {
// Success!
//Window.alert("JSON obtained");
Window.alert(trd.getEntries().toString());
}
});

编辑 现在我开始了

Cross-site hosted mode not yet implemented. See issue http://code.google.com/p/google-web-toolkit/issues/detail?id=2079

最佳答案

我们正在使用 maven 和 JBoss 7.2.0。但是,如果您希望/需要进行最少的更改或无需更改,您也应该能够在 Tomcat 或其他容器中使用它。

我们使用 dsmiley's httpproxy servlet 做到了这一点: 下载并构建它,将其添加到您的 Maven 存储库(或者忘记 pom.xml 文件,只需将新构建的 jar 添加到您的库中)。

在我们的 pom.xml 文件中,我们添加了一个依赖项:

   <dependency>
<groupId>org.mitre.dsmiley.httpproxy</groupId>
<artifactId>smiley-http-proxy-servlet</artifactId>
<!-- 1.3-SNAPSHOT adds ability to handle spaces in paths, 1.2 works otherwise -->
<version>1.3-SNAPSHOT</version>
</dependency>

在您的 web.xml 中添加 servlet 映射:

   <servlet>
<servlet-name>FirstResourceProxy</servlet-name>
<servlet-class>org.mitre.dsmiley.httpproxy.ProxyServlet</servlet-class>
<init-param>
<param-name>targetUri</param-name>
<param-value>http://targethost:port/and/root/path</param-value>
</init-param>
<init-param>
<param-name>log</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>FirstResourceProxy</servlet-name>
<url-pattern>/firstResource/*</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>SecondResourceProxy</servlet-name>
<servlet-class>org.mitre.dsmiley.httpproxy.ProxyServlet</servlet-class>
<init-param>
<param-name>targetUri</param-name>
<param-value>http://targethost:port/and/root/path</param-value>
</init-param>
<init-param>
<param-name>log</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>SecondResourceProxy</servlet-name>
<url-pattern>/secondResource/*</url-pattern>
</servlet-mapping>

关于java - 如何从仅提供 JSON 服务的服务器获取 JSONP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17077248/

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