2012-06-13 42 views
1

我有一個Adobe Flex Web應用程序,我們正在將其轉換爲Adobe AIR應用程序。在服務器端,我有一個只接受HTTP POST請求的servlet。我們使用navigateToUrl()來打開一個帶有POST請求結果的網頁。在Web應用程序中,此功能非常完美(通過請求的結果打開一個新選項卡),但它不能從Adobe AIR客戶端使用完全相同的代碼。 HTTP POST被轉換爲HTTP GET,這是servlet不接受的。網絡瀏覽器顯示:來自Adobe air的Http POST無法正常工作

HTTP Status 405 - Request method 'GET' not supported. 

這是要求是如何製造:

var request:URLRequest = new URLRequest(); 
request.method = URLRequestMethod.POST; 
request.url = presentationModel.exportURL; 

(該exportURL變量是一個字符串,它看起來像http://ipaddress:8080/myapp/export/eventhistory1339595975131.html)給出

我檢查this forum post但解決方案那裏(用字符串本身替換指向字符串的const)沒有意義,並且在我嘗試時沒有工作。

我也看過this question,但沒有真正的答案。註釋表明用戶增加了一個斜線,以他的URL,使其工作,但是,這並不在我的情況下工作,因爲該URL的形式爲: http://ipaddress:8080/myapp/export/eventhistory1339595975131.html

我使用Adobe空氣3.3和Flex SDK 4.5

+0

當你說它不起作用;你能詳細說明嗎?什麼不行?你有錯誤嗎?你會得到意想不到的行爲? – JeffryHouser

+0

什麼不工作?你有沒有收到任何錯誤信息? – RIAstar

+1

@ www.Flextras.com我想我們在同一時間輸入;) – RIAstar

回答

1

縱觀documentation它似乎POST請求轉換爲GET

參數navigateToURL方法

request:URLRequest - 一個URLRequest對象,它指定要導航到的URL爲 。對於在Adobe AIR中運行的內容,在使用navigateToURL()函數時,運行時將使用POST方法(其方法屬性設置爲 URLRequestMethod.POST)的URLRequest視爲使用GET方法。

也許使用URLLoader代替?

+0

Thx。完全錯過了文檔中的內容。我希望Adobe修復這個問題,我真的不明白他們爲什麼這樣做。此外,因爲如果使用'FileReference.download(Request,String)',它可以使您的請求對象中的POST設置更加通用!所以他們可以支持它,如果他們想要。 –