我将一个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为空。可能导致这种情况的原因是什么?
答案 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";