Apache flex 在Flex中,我可以发送HTTPService POST请求而不是GET请求吗?

Apache flex 在Flex中,我可以发送HTTPService POST请求而不是GET请求吗?,apache-flex,http,httprequest,Apache Flex,Http,Httprequest,当Flex(HTTPService)通过SSL加载XML时,internetexplorer(6,7)中存在已知问题。Flash Player在这种情况下抛出错误#2032:Stream Error 根据和的建议,应在服务器端设置“缓存控制:无存储”以解决此问题 不幸的是,我无法访问应用程序的后端,因此我应该通过Flex解决它 我的目标是在运行时加载带有配置的xml文件。 Flex中不允许使用GET请求的自定义头(如果我错了,请告诉我)。因此,我决定通过POST请求来完成我的目标,令人惊讶的是,

当Flex(
HTTPService
)通过
SSL
加载
XML
时,
internetexplorer(6,7)
中存在已知问题。Flash Player在这种情况下抛出
错误#2032:Stream Error

根据和的建议,应在服务器端设置“缓存控制:无存储”以解决此问题

不幸的是,我无法访问应用程序的后端,因此我应该通过Flex解决它

我的目标是在运行时加载带有配置的xml文件。
Flex中不允许使用
GET
请求的自定义头(如果我错了,请告诉我)。因此,我决定通过
POST
请求来完成我的目标,令人惊讶的是,它工作得非常好

以下是我附带的代码:

var httpService:HTTPService = new HTTPService();
httpService.url = 'config.xml';
httpService.method = 'POST';
httpService.requestTimeout = 10;
httpService.contentType = "application/xml";
httpService.headers["Cache-Control"] = "no-store";
httpService.resultFormat = "e4x";
var localResponder:Responder = new Responder(
    function(event:ResultEvent):void {
        //event.result returns the required xml configuration
    },
    function(event:FaultEvent):void {
    });
var token:AsyncToken = httpService.send({});
token.addResponder(localResponder);
我的问题是:当发送
POST
请求而不是
GET
请求时,是否会有任何副作用



更新:

为了证明GET请求没有标题,我使用了@Reboog711提供的代码并创建了一个小应用程序。代码如下:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx">
    
    <fx:Script>
        <![CDATA[
            import mx.rpc.http.HTTPService;
            
            protected function sendHTTPRequest(event:MouseEvent):void
            {
                var httpService:HTTPService = new HTTPService();
                httpService.url = 'xml.xml';
                var headerData : Object = new Object();
                headerData['Cache-Control'] = 'no-store';
                httpService.headers = headerData;
                httpService.send();
            }
        ]]>
    </fx:Script>
    
    <s:Button label="SEND HTTP REQUEST" 
              horizontalCenter="0" verticalCenter="0" click="sendHTTPRequest(event)"/>
    
</s:Application>

这是我在Charles应用程序中看到的,当我发送HTTP请求时

你可以自己测试一下。此外,当我试图解决我的问题时,我看到许多证据表明GET请求无法使用自定义头发送。你可以看看

谢谢

您应该能够毫无问题地添加到HTTPService请求中。我以前在将Flex应用程序与YouTube API集成时做过。从概念上讲,应该是这样的:

var httpService:HTTPService = new HTTPService();
var headerData : Object = new Object();
headerData['Cache-Control'] = 'no-store';
http.headers = headerData;

如果您执行了其他链接,则会出现其他链接。只要您的服务同时支持GET和POST请求;我不知道你为什么会遇到任何问题

如果它能工作,并且您在浏览器控制台中没有看到错误,在web服务器日志中也没有错误(您可能看不到),我就不会担心它了。我不知道你不能使用带有GET in Flex的自定义标题,你试过了吗?从根本上说,POST/GET之间的区别在于找到“消息体”或数据的位置,在这种情况下,您实际上没有发布任何数据。GET/POST的含义在语义上存在一些差异(可能会影响缓存等),但我不认为你所做的有什么真正的危害。谢谢,@Reboog711!我已经获取了您的代码并创建了一个应用程序来测试您的语句(请参阅问题的更新)。我希望被证明是错误的,但我确信自定义标题只适用于
POST
请求。