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

时间:2013-07-29 17:55:52

标签: flex http httprequest

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

根据Microsoftothers的建议,应在服务器端设置“Cache-Control:no-store”以解决问题。

不幸的是,我无法访问应用程序的后端,因此我应该通过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请求时。

enter image description here

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

谢谢!

1 个答案:

答案 0 :(得分:2)

您应该能够毫无问题地将headers添加到HTTPService请求中。我之前已经完成了将Flex应用程序与YouTube API集成的过程。从概念上讲,它应该是这样的:

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

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