2015-04-07 2 views
0

Я пытаюсь сделать запрос HTTP POST через as3 AIR для мобильного эквивалента этого завитка запроса:Создание запрос HTTP POST в as3 AIR

curl -d '{"firstname": "John", "lastname": “Doe"}' -H 'Content-Type: application/json' http://eve-demo.herokuapp.com/people 

Это мой код:

var urlVariables:URLVariables = new URLVariables(); 
urlVariables.firstname = "Jhon"; 
urlVariables.lastname = "Doe"; 

var request:URLRequest = new URLRequest(); 
request.url = "http://eve-demo.herokuapp.com/people"; 
request.contentType = "multipart/form-data"; 
request.method = URLRequestMethod.POST; 
request.data = urlVariables; 

var contentTypeHeader:URLRequestHeader = new URLRequestHeader("Content-Type", "application/json"); 
var acceptHeader:URLRequestHeader = new URLRequestHeader("Accept", "application/json"); 
var formDataHeader:URLRequestHeader = new URLRequestHeader("Content-Type", "multipart/form-data"); 

request.requestHeaders = [acceptHeader, formDataHeader]; 

postLoader = new URLLoader(); 
postLoader.dataFormat = URLLoaderDataFormat.BINARY; 
postLoader.addEventListener(Event.COMPLETE, loaderCompleteHandler); 
postLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); 
postLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); 
postLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); 

try 
{ 
    postLoader.load(request); 
} 
catch (error:Error) 
{ 
    trace("Unable to load post URL"); 
} 

Но я получаю следующее сообщение об ошибке:

[HTTPStatusHandler]: [HTTPStatusEvent type="httpStatus" bubbles=false cancelable=false eventPhase=2 status=400 redirected=false responseURL=null] 
[IOErrorHandler]: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Stream Error. URL: http://eve-demo.herokuapp.com/people" errorID=2032] 

кого-то есть предложения, как сделать запрос HTTP POST с «многообразным/форм-й ata '(без какого-либо файла для загрузки) ??

Благодаря

+0

проверить, что ответ http://stackoverflow.com/questions/18830721/send-file-from-actionscript-to-servlet/18830921#18830921 – fsbmain

+0

это может работать если я хочу загрузить файл, но что, если я просто хочу отправить эти 2 переменные в качестве запроса POST? – Aditya

+0

просто пропустите _byteArray_, он может быть нулевым, или если вам не нужно _contentType = "multipart/form-data" _, вы можете просто пропустить его для установки (значение по умолчанию - _ "application/x-www-form -urlencoded "_) – fsbmain

ответ

0

URLVariables предназначен для использования с URL-адреса переменных в кодировке, а не в формате JSON. Попробуйте установить data в строку JSON:

var params:Object = { firstname: "John", lastname: "Doe" }; 
request.data = JSON.stringify(params); 
+0

Nope все еще не работает .. такая же ошибка с HTTP-статусом 400 – Aditya

+0

Вы уверены, что параметры действительны для этой веб-службы? – Aaron

+0

Yup, сервис представляет собой демонстрацию рамки python eve, вы можете использовать ее тоже! – Aditya