2012-06-13 105 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设置更加通用!所以他们可以支持它,如果他们想要。 –