2012-10-08 29 views
5

Cuando ejecuto el siguiente código:solicitud POST de auto-conversión de URLRequest/URLLoader para 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'); 
}); 

Resulta que mi solicitud POST a GET explícita debido a la presencia de la cadena de consulta. Si elimino la cadena de consulta (y serializo como parte del cuerpo de POST), realiza con éxito la solicitud de POST correspondiente. ¿Hay alguna forma de evitar que haga eso? Mi servidor requiere que se realice una solicitud POST con una cadena de consulta.

+0

me gustaría sugerir retirar esta biblioteca si nada más da: https://github.com/gabriel/as3httpclient parece que esto se pasa de algunos de los temas que he encontrado con el uso de las clases establecidas. – shaunhusain

+2

Por favor, tenga en cuenta acerca de github.com/gabriel/as3httpclient. Esta es una biblioteca de socket personalizada, por lo tanto, requiere la Política de seguridad de socket en el servidor del que intentará recuperar los datos. No todos brindan este servicio. –

Respuesta

8

Ah que he encontrado la respuesta, parece que hay que especificar un cuerpo, así o de lo que todavía va a enviar como una solicitud GET de sus documentos:

Nota: Si se ejecuta en Flash Player y el referenciado el formulario no tiene cuerpo, Flash Player utiliza automáticamente una operación GET, incluso si el método es establecido en URLRequestMethod.POST. Por esta razón, se recomienda incluir siempre un cuerpo "ficticio" para garantizar que se utiliza el método correcto .

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

+1

Esto suena exactamente a lo que estoy buscando - Voy a intentarlo y volver a contactarlo – badunk

+0

Sí, ¡funcionó, gracias! como un lado, la clase mx.rpc.Operation menos utilizada no puede ser alimentada con un cuerpo POST y todavía está por defecto en GET debido a ese tecnicismo .... lame – badunk

+0

¡Genial! Te agradó por la información adicional sobre Operation, Me estoy deslizando lentamente de AS3, pero intentaré enterrar estas cositas en mi cerebro para su uso posterior. – shaunhusain

1

Es debido a la forma en que están teniendo su URL. Si desea tener sus variables para el método POST, necesita usar 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'); 
}); 
Cuestiones relacionadas