HTTP URLRequest в Adobe Flex - PullRequest
       1

HTTP URLRequest в Adobe Flex

1 голос
/ 28 марта 2011

Я пытаюсь сделать простой HTTP URLReqest в Adobe Flex, вот код примерно:

var requestSender:URLLoader = new URLLoader();
var urlRequest :URLRequest = new URLRequest("http://localhost:8888");
var msg:String = "data=blah";

urlRequest.data = msg;
urlRequest.contentType = "application/x-www-form-urlencoded";
urlRequest.method = URLRequestMethod.POST;

Это дает что-то близкое к:

POST / HTTP/1.1
Referer: app:/PersonSearch.swf
Accept: text/xml, application/xml, application/xhtml+xml, ...
x-flash-version: 10,1,85,3
Content-Type: application/x-www-form-urlencoded
Content-Length: 102
Accept-Encoding: gzip,deflate
User-Agent: Mozilla/5.0 (Windows; U; en-US) ...
Host: 127.0.0.1:8888
Connection: Keep-Alive

data=blah

Что мне действительно нужно, так это:

POST / HTTP/1.1
Content-Type:application/x-www-form-urlencoded
Connection:close
Via:MDS_777
Accept:*/ *
Host:localhost:8888
Content-Length:104

data=blah

Кто-нибудь знает, как я удаляю поля, такие как Accept-Encoding , добавляю поля, такие как "Via", и устанавливаю Соединение с «close» ?

Также, как мы получаем ответ от HTTP-запроса?

Спасибо, Фил

1 Ответ

1 голос
/ 28 марта 2011

Flash Player не позволяет изменять заголовки Accept-Encoding или Через с помощью ActionScript. Если вы попытаетесь сделать это, вы получите следующее сообщение:

Ошибка № 2096: заголовок HTTP-запроса Accept-Encoding не может быть установлен через ActionScript.

Если вы используете переменные URL, вы можете попытаться упростить ваш код, выполнив следующее:

var variables:URLVariables = new URLVariables();
variables.data = "blah"; //same as doing data=blah
variables.data2 = "blah2"; //same as doing data2=blah2

var requestSender:URLLoader = new URLLoader();
var urlRequest:URLRequest = new URLRequest("http://localhost:8888");
urlRequest.method = URLRequestMethod.POST;
urlRequest.data = variables;

Чтобы получить ответ, вам нужно будет прослушать Event.COMPLETE на "requestSender":

requestSender.addEventListener(Event.COMPLETE, completeHandler); 

private function completeHandler(event:Event):void {
    // do something with requestSender.data (or URLLoader(event.target).data)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...