Проблема кодирования данных запроса Flash / App Engine (GET работает, POST не работает) - PullRequest
0 голосов
/ 12 ноября 2010

Я новичок во Flash и пытаюсь связаться с сервером ядра приложения, но у меня возникли некоторые проблемы с кодированием.

var playerLoader:URLLoader = new URLLoader();
playerLoader.addEventListener( Event.COMPLETE, function(e:Event) { doStuff(); } );
var requestVars:URLVariables = new URLVariables();
requestVars.q = "åäö";
var urlRequest:URLRequest = new URLRequest( serverUrl );
urlRequest.method = URLRequestMethod.POST;
urlRequest.data = requestVars;
playerLoader.load( urlRequest );

Это не работает, дает некоторые ошибки кодирования на стороне сервера.Но если я переключаю POST на GET, это автоматически работает.

Есть какие-нибудь подсказки, что происходит и как я могу использовать POST?

Спасибо!

1 Ответ

2 голосов
/ 12 ноября 2010

Насколько я знаю, HTTP-запросы Actionscript будут изначально кодироваться в UTF-8.

У меня это работает для испанских символов:

var url:String = "historia.php";
var request:URLRequest = new URLRequest(url);
var requestVars:URLVariables = new URLVariables();
var now:Date = new Date();
requestVars.historia = "áóíúéñÁÓÍÚÉÑ";   
request.data = requestVars;
request.method = URLRequestMethod.POST;
var urlLoader:URLLoader = new URLLoader();
urlLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
urlLoader.load(request);

А на стороне PHP (возобновлено для ясности):

header ('Content-type: text/html; charset=utf-8');
if(isset($_POST['historia']) {
    $historia = mysql_real_escape_string(utf8_decode($_POST['historia']));
    $historia = filter_var($historia, FILTER_SANITIZE_STRING);
        // insert into DB...
}

Я использую utf8_decode(), потому что база данных не настроена с кодировкой UTF-8.

Как вы обрабатываете запрос на стороне сервера? Возможно, проблема лежит на стороне сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...