2012-10-08 14 views
5

Kiedy wykonać następujący kod:URLRequest/URLLoader automatycznej konwersji żądanie POST na GET

var urlRequest:URLRequest = new URLRequest("http://somehost/with/some/path?andsomequerystring=true"); 
urlRequest.method = 'POST'; 
var urlLoader:URLLoader = new URLLoader(urlRequest); 
urlLoader.addEventListener(Event.COMPLETE, function(event:Event):void{ 
    trace('sweet'); 
}); 

Okazuje moje wyraźne żądanie POST dostać ze względu na obecność kwerendy. Jeśli usunę zapytanie (i serializuje jako część treści POST), pomyślnie wykona odpowiednie żądanie POST. Czy istnieje sposób, aby temu zapobiec? Mój serwer wymaga wysłania żądania POST z zapytaniem.

+0

Sugeruję sprawdzanie tej biblioteki, jeśli nic innego nie daje: https://github.com/gabriel/as3httpclient wydaje się to robi przeszłości niektóre z problemów, jakie napotkasz pomocą dostarczonych klas. – shaunhusain

+2

Proszę pamiętać o github.com/gabriel/as3httpclient. Jest to niestandardowa biblioteka gniazd, dlatego wymaga ona zasad bezpieczeństwa Socket na serwerze, z którego będziesz próbował pobierać dane. Nie wszyscy zapewniają tę usługę. –

Odpowiedz

8

Ah Chyba znalazłem odpowiedź, wydaje trzeba określić ciało jak dobrze albo będzie nadal wysyłać jako żądanie GET z ich dokumentów:

Uwaga: Jeśli uruchomiona w programie Flash Player i odwołanie formularz nie ma ciała, Flash Player automatycznie używa operacji GET, nawet jeśli metoda jest ustawiona na URLRequestMethod.POST. Z tego powodu zaleca się, aby zawsze zawierał "obojętne" ciało, aby upewnić się, że użyta została poprawna metoda .

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/URLRequest.html#url

+1

To brzmi jak dokładnie to, czego szukam - dam ci spróbować i wrócę do ciebie – badunk

+0

tak, zadziałało, dzięki! na marginesie, rzadziej używana klasa mx.rpc.Operation nie może być zasilana treścią POST i nadal domyślnie jest GET z powodu tej technice .... lame – badunk

+0

Awesome cieszy się, że udało się to dla Ciebie dzięki za dodatkowe informacje o operacji, Powoli wysuwam się z AS3, ale spróbuję pogrzebać te ciekawostki w moim mózgu do późniejszego wykorzystania. – shaunhusain

1

To dlatego, że sposób masz adresu URL. Jeśli chcesz mieć swoje zmienne dla metody POST, musisz użyć URLVariables.

var urlRequest:URLRequest = new URLRequest(YOUR_REQUEST_URL_HERE); 
var variables:URLVariables = new URLVariables(); 
variables.andsomequerystring = true; 

urlRequest.data = variables; 
urlRequest.method = 'POST'; 
var urlLoader:URLLoader = new URLLoader(urlRequest); 
urlLoader.addEventListener(Event.COMPLETE, function(event:Event):void{ 
    trace('sweet'); 
});