2011-08-16 45 views
0

我正在使用GWT开发Web应用程序。我目前使用AJAX调用从服务器检索值。我有以下关于以AJAX调用查询:GWT Async to URL

假设:我有一个应用程序,它的名称是:“应用程序”和入口点类是:“entry.java”

我知道了:应用程序可以被调用为:http://localhost:8080/Application/entry.html

1.我想知道什么是由gwt.getmodulebaseURL()给出的输出URL?

假设:在同一个应用程序中,我有一个名为“ServerValuesService”的服务及其相应的Async。我有相应的serviceImpl,它有一个名为的方法列表<在服务器端的字符串>搜索(字符串)

我也可以从服务器检索值。但是,

2.我想知道访问此服务的直接URL是什么?对于实例,我需要获取值的列表,只需给出一个URL(字符串的传递值)。即我只需要键入一个网址,如访问方法搜索(字符串)和检索列表:

的http://本地主机:8080 /应用/项/ serverValuesService字符串=“你好”

我确定上面的URL是错误的。我需要知道URL和相应服务之间的确切转换。这可能吗?

在此先感谢!

回答

1

1)在你的情况下,它会给你http://localhost:8080/Application。应用程序是您的模块名称。

2)这些服务实际上是HttpServlets,它们的URL在web.xml文件中定义。但谷歌使用POST方法发送你的变量并为你处理序列化,你试图做的是通过GET方法发送它,据我所知,谷歌RemoteServiceServlet没有实现。所以我会说没有它不可能除非您自己扩展这些服务以使用GET方法,但我不知道这是否可行。

+0

非常感谢。但是,要做到这一点可以做些什么呢?例如,我们可以实现普通的旧Java HTTP servlet来做到这一点? – Ashok

+0

如果您没有理由使用GWT用于响应RPC请求的同一个servlet(换句话说,如果URL不需要相同),则可以创建一个不同的servlet来处理GET请求获取参数并返回结果作为响应。你可以通过将它添加到你的web.xml来托管这个servlet。然后你将有2个servlet做同样的事情。一个用于GWT-RPC,另一个用于通过浏览器直接访问。 – pistolPanties

1

假设:我有一个应用程序,它的名称是:“应用程序”和入口点类是:“entry.java”

我知道:应用程序可以被调用为:http://localhost:8080/Application/entry.html

url http://localhost:8080/Application/entry.html被称为host page url。在这个html页面您使用脚本标签加载GWT模块:

<!-- This script tag is what actually loads the GWT module. The --> 
<!-- 'nocache.js' file (also called a "selection script") is  --> 
<!-- produced by the GWT compiler in the module output directory --> 
<!-- or generated automatically in hosted mode.     --> 
<script language="javascript" src="calendar/calendar.nocache.js"></script> 

所以,如果你把上面的例子中你entry.html,该模块将被从http://localhost:8080/Application/calendar/calendar.nocache.js使http://localhost:8080/Application/calendar/你的模块基本URL加载。

我想知道访问此 服务的直接URL是什么?对于实例,我需要获取值的列表,只需 给出一个URL(字符串的传递值)。即我需要的只是通过输入网址

GWT RPC使用自定义序列化格式编码请求发送到服务器的RPC服务访问 方法搜索(字符串)和检索列表。 RPC服务在服务器上作为RemoteServiceServlet的子类实现。 RemoteServiceServlet处理http POST请求,对来自客户端的请求进行反序列化并调用适当的子类服务方法。

所以对于直接访问该服务,你需要: 1.服务URL 2.请求负载编码GWT的自定义序列化格式 3.能够HTTP POST有效载荷的服务URL

1和3个很容易获得。您已经知道您的服务在web.xml中映射的URL。您可以从任何http客户端或浏览器插件(如this)发布帖子。硬件部分是以GWT的自定义序列化格式生成请求有效载荷。对于简单的情况,您可以从您的应用程序生成请求,并从Firebug,Fiddler或类似工具捕获原始有效内容,然后使用您的http客户端进行重放。

+0

嗨塔希尔,谢谢你。我在海报插件中尝试了 “http:// localhost:8080/Application/.. to service /”,并使用了参数值。但是,我得到了答复 **“所请求的资源不允许指定的HTTP方法(此方法不支持HTTP方法GET)**所以,我想下面的答案是正确的!即GWT不会支持get() – Ashok

+0

@Ashok,我也明确地说过:“RemoteServiceServlet处理http POST请求”。您还可以使用海报附件来执行POST请求 –