2012-10-08 8 views
5

Quando eseguo il seguente codice:URLRequest/URLLoader auto-conversione richiesta POST per ottenere

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'); 
}); 

Si scopre la mia richiesta POST esplicito alla GET a causa della presenza della querystring. Se rimuovo la querystring (e serializzi come parte del corpo POST), effettua correttamente la richiesta POST corrispondente. C'è un modo per impedirgli di farlo? Il mio server richiede che venga fatta una richiesta POST con una querystring.

+0

Io suggerirei di check-out questa libreria se non altro dà: https://github.com/gabriel/as3httpclient sembra che questo viene passato alcuni dei problemi che ho incontrato utilizzando le classi fornite. – shaunhusain

+2

Per favore, nota su github.com/gabriel/as3httpclient. Questa è una libreria socket personalizzata, quindi richiede Socket Security Policy sul server da cui proverai a recuperare i dati. Non tutti offrono questo servizio. –

risposta

8

Ah pensare ho trovato la risposta, sembra si deve specificare un corpo così, altrimenti sarà ancora inviare come una richiesta GET dai loro documenti:

Nota: se in esecuzione in Flash Player e il fatto riferimento il modulo non ha corpo, Flash Player utilizza automaticamente un'operazione GET, anche se il metodo è impostato su URLRequestMethod.POST. Per questo motivo, si consiglia di includere un corpo "fittizio" per garantire che il metodo corretto sia utilizzato.

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

+1

Questo sembra esattamente quello che sto cercando - Darò questa prova e tornerò da te – badunk

+0

sì, ha funzionato, grazie! per inciso, la classe mx.rpc.Operation meno utilizzata non può essere alimentata da un corpo POST e continua a essere GET per via di tale tecnicità .... lame – badunk

+0

Improvvisamente contento che abbia funzionato per te grazie per le informazioni extra sull'operazione, Sto lentamente scivolando fuori dall'AS3, ma cercherò di seppellire questi bocconcini nel mio cervello per un uso successivo. – shaunhusain

1

È perché il modo in cui si stanno avendo il vostro URL. Se si desidera avere le variabili per il metodo POST, è necessario utilizzare 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'); 
}); 
Problemi correlati