2011-08-16 46 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請求 –