如何查看Google Web Toolkits(GWT)RPC調用的數據格式以及如何傳輸IsSerializable對象。我知道Java Serializable傳輸某種二進制格式,但GWT也是如此嗎? (因爲我不指望它與JavaScript兼容,或者至少需要一些額外的解析)。GWT RPC數據格式
27
A
回答
48
編輯:布賴恩Slesinsky剛剛記錄的協議(通過逆向工程的代碼):https://docs.google.com/document/d/1eG0YocsYYbNAtivkLtcaiEE5IOF5u4LUol8-LL0TIKU/edit
首先,GWT-RPC協議是不對稱的,使得它的客戶端總是優化:快速反序列化來自服務器的東西,並快速序列化一些東西發送給它。
這顯然不是二進制的,正如您懷疑的那樣,但是基於文本。客戶端到服務器協議以管道分隔,而服務器到客戶端基於JSON(前綴爲//OK
或//EX
,以告知請求是成功還是失敗)。兩者都使用可序列化類的常見知識來序列化/反序列化;例如,雙方都知道類X有兩個字段,即一個整數和一個字符串,按順序序列化,因此它們都寫/讀一個整數,然後是一個字符串,而不需要以編碼格式指定它是哪個字段關於。
GWT-RPC協議版本化(它隨着新的GWT版本的發佈而定期更新),並使用類和可序列化字段名稱的哈希來確保客戶端和服務器都使用相同版本的類(這意味着每次更改可序列化類時,都必須重新編譯並重新部署客戶端代碼)。
最好的文檔是代碼,但你會發現在這些幻燈片的請求格式的概述:https://www.owasp.org/images/7/77/Attacking_Google_Web_Toolkit.ppt
RequestFactory,違背GWT-RPC,採用的是對稱的基於JSON的協議(基於AutoBean的JSON序列化),即使沒有從相同的代碼編譯(當然,取決於你在版本之間做出的改變),客戶端和服務器也可以進行通信,因爲它們傳遞了類名和屬性名。
相關問題
- 1. CellTable GWT RPC匹配數據
- 2. 使用GWT-RPC分頁GWT-EXT數據網格?
- 3. GWT RPC測試數據庫連接
- 4. 無需RPC的GWT數據庫訪問
- 5. GWT RPC和數據轉換爲GXT Grid
- 6. RPC 1.0 vs deRPC GWT-RPC
- 7. JSON格式RPC
- 8. GWT RPC失敗
- 9. 錯誤gwt-rpc
- 10. Gwt和php rpc
- 11. GWT RPC SerializationException
- 12. Google GWT RPC Vector
- 13. GWT RPC Alternative
- 14. Gwt RPC和Servlet
- 15. GWT跨域rpc
- 16. 繼承+ RPC GWT
- 17. GWT/GWT-RPC使用com.google.gdata.contacts
- 18. GWT RPC屬性空
- 19. GWT RPC不工作
- 20. GWT RPC XSRF保護
- 21. GWT RPC GWTTestCase + GUICE 2.0
- 22. Vaadin GWT RPC設置?
- 23. GWT-One RPC之後
- 24. GWT SerializationException__Ljava_lang_String_2V做RPC時
- 25. GWT RPC序列化
- 26. Gwt RPC處於開發模式
- 27. gwt-RPC問題!什麼是使用gwt-RPC的最佳實踐?
- 28. GWT,Guice ServletModule和GWT RPC問題與servlet.init()
- 29. 從Python-Mechanize調用GWT RPC函數
- 30. 創建GWT RPC服務
偉大的答案,順便說一句,你知道任何沒有Java實現GWT_RPCs? – Stefan 2011-05-26 12:26:47
Google向我介紹有關http://code.google.com/p/gwtphp/和http://code.google.com/p/python-gwt-rpc/的內容,但它們看起來已被放棄(並且RequestFactory是要走的路,但我不知道任何非Java實現) – 2011-05-26 19:03:16
再次感謝。根據這一點,當我想談談沒有Java服務器RPC是不是要走的路,我應該一些自定義的JSON或XML協議。 – Stefan 2011-05-27 06:51:41