我正在尝试通过POST发送数据,因为它太长了,无法通过GET发送。
这是我正在使用的代码......
pdfUrl.method = URLRequestMethod.POST;
var vars:URLVariables = new URLVariables();
vars.html = data;
pdfUrl.data = vars;
navigateToURL(pdfUrl);
问题是它总是作为GET发送,而vars.html中的数据太长,我的服务器无法接收。
更糟糕的是,似乎AIR只能通过navigateToURL发送GET。
问题是,我需要打开一个新的浏览器窗口并发送POST数据,以便我服务器上的脚本可以为用户创建PDF文件。
有什么办法解决这个问题?
答案 0 :(得分:1)
我不知道有什么方法可以用POST请求打开一个新的浏览器窗口,GET是用来打开页面的默认HTTP方法(这很有意义)。但是,另一种方法是在AIR中使用简单的HTTP请求POST数据,一旦在AIR中获得对POST请求的响应,就可以使用GET请求打开新的浏览器窗口。
所以:
我觉得这应该很好用。
答案 1 :(得分:0)
// Upload MP3-Byte-Array
private function uploadFile():void
{
var uploadURL:URLRequest = new URLRequest();
uploadURL.url = "myfile.php?var1=var1Value&var2=var2Value";
uploadURL.contentType = 'application/octet-stream';
uploadURL.method = URLRequestMethod.POST;
uploadURL.data = heavyDataThatyouWantToPass;
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, completeHandler);
urlLoader.load(uploadURL);
}
private function completeHandler(event:Event):void
{
var loader:URLLoader = URLLoader(event.target);
}
myfile.php将是这样的:
<?php
$var1 = $_REQUEST['var1Value'] ;
$var2 = $_REQUEST['var2Value'] ;
$heavyData = $GLOBALS[ 'HTTP_RAW_POST_DATA' ];?>