在Flash中设置URLRequestHeader时,PHP Rest Server不接收$ _POST

时间:2012-10-19 07:45:07

标签: php actionscript-3 flash

我将一个json字符串发送到REST服务器并接收一个作为回报,我使用的flash代码如下

        var urlLoader : URLLoader = new URLLoader();
        urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
        urlLoader.addEventListener(Event.COMPLETE, completeHandler);
        urlLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

        var header1 : URLRequestHeader = new URLRequestHeader("Content-Type", "application/json");
        var header2 : URLRequestHeader = new URLRequestHeader("Accept", "application/json");
        var header3 : URLRequestHeader = new URLRequestHeader("pragma", "no-cache");

        var urlRequest : URLRequest = new URLRequest(url);
        urlRequest.requestHeaders.push(header1);
        urlRequest.requestHeaders.push(header2);
        urlRequest.requestHeaders.push(header3);

        urlRequest.data = session;
        urlRequest.contentType = "application/json";
        urlRequest.method = URLRequestMethod.POST;
        urlLoader.load(urlRequest);

当我没有将自定义请求标头添加到请求时,我的服务器正确接收POST数据。当我添加自定义标头时,POST为空。可能导致这种情况的原因是什么?

1 个答案:

答案 0 :(得分:0)

虽然数据将通过POST发送,但PHP不会填充$_POST全局数组,因为您使用的内容类型为application/json

尝试将Content-Type标题更新为application/x-www-form-urlencoded

var header1 : URLRequestHeader = new URLRequestHeader("Content-Type", "application/x-www-form-urlencoded");

在这里,尽管你已经设置了上面的标题:

urlRequest.contentType = "application/x-www-form-urlencoded";