Actionscript 3 Air iOS POST данные не отправляются с помощью URLLoader
У меня есть следующий код для отправки данных POST на мой сервер:
var headers:Array = [
new URLRequestHeader("api_access_token", ACCESS_TOKEN),
new URLRequestHeader("api_secret", SECRET),
new URLRequestHeader("Content-type", "application/json")
];
var base_url = "http://example.com/";
var complete_func:Function;
function postRequest(url:String, params:Object, response_func:Function){
complete_func = response_func;
var request = new URLRequest(base_url+url);
request.requestHeaders = headers;
request.method = URLRequestMethod.POST;
request.contentType = "application/json";
request.data = JSON.stringify(params);
// Handlers
var postLoader = new URLLoader();
postLoader.addEventListener(Event.COMPLETE, parseResponse);
postLoader.addEventListener(IOErrorEvent.IO_ERROR, function(e:IOErrorEvent){ trace(e); });
postLoader.load(request);
}
function parseResponse(e:Event){
var data = e.target.data;
trace(data);
var json_data = JSON.parse(data);
complete_func(json_data);
}
Проблема на моем сервере, когда я использую var_dump($_POST)
ничего, кроме пустого массива, не возвращается. Я не знаю, почему это так. я сделал traces
на params
а также url
параметры, которые содержат релевантные данные.
Параметры, которые я отправляю:
var customerDetails:Object = new Object();
customerDetails.first_name = firstNameField.text;
customerDetails.last_name = lastNameField.text;
customerDetails.dob = dobField.text;
customerDetails.email = emailField.text;
Заголовки, полученные с помощью PHP list_headers()
возвращает:
array(6) { [0]=> string(24) "X-Powered-By: PHP/5.4.30" [1]=> string(38) "Expires: Thu, 19 Nov 1981 08:52:00 GMT" [2]=> string(77) "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0" [3]=> string(16) "Pragma: no-cache" [4]=> string(44) "api_secret: example_secret" [5]=> string(50) "api_access_token: example_access" }
Я использую Air 16.0 для iOS с ActionScript 3
Любая помощь будет отличной. Я не знаю, является ли это проблемой междоменной политики.
PS Работает нормально с запросом GET.
2 ответа
Используйте право dataFormat
:
loader.dataFormat = URLLoaderDataFormat.VARIABLES
Код As3 действителен. Вам нужно улучшить со стороны php кода сервера.. Пожалуйста, попробуйте это..
<?php
$body = @file_get_contents('php://input');
$jsn = json_decode($body);
echo $jsn->first_name;
echo $jsn->last_name;
echo $jsn->dob;
echo $jsn->email;
?>