AS3 AIR 3.5,用于Android在URL请求中发送POST数据

AS3 AIR 3.5,用于Android在URL请求中发送POST数据,android,actionscript-3,air,urlrequest,Android,Actionscript 3,Air,Urlrequest,我正在尝试将数据发布到AIR中的外部URL,以便Android应用程序登录用户。它在我的pc上的Flash调试器中工作,但在我的Android设备上不工作。我已为我的应用设置了Internet权限。我已经为IO_错误和SECURITY_错误设置了侦听器,但这两个都没有被触发。它只是挂在那里,当我在设备上测试时什么也不做,但它在调试播放器中运行良好 编辑:我已经搜索了答案,最接近的答案是:这建议在我的请求中指定内容类型,但这并不能解决我的问题 编辑:当我将其上传到服务器并将crossdomain.

我正在尝试将数据发布到AIR中的外部URL,以便Android应用程序登录用户。它在我的pc上的Flash调试器中工作,但在我的Android设备上不工作。我已为我的应用设置了Internet权限。我已经为IO_错误和SECURITY_错误设置了侦听器,但这两个都没有被触发。它只是挂在那里,当我在设备上测试时什么也不做,但它在调试播放器中运行良好

编辑:我已经搜索了答案,最接近的答案是:这建议在我的请求中指定内容类型,但这并不能解决我的问题

编辑:当我将其上传到服务器并将crossdomain.xml添加到请求的站点时,它也可以工作

public static function login(user:String, pass:String):void 
    { 
        username = user;
        var request:URLRequest = new URLRequest( "http://mysite.com/"+user+"/login.json" ); 
        request.method = URLRequestMethod.POST; 
        request.contentType = 'application/x-www-form-urlencoded';

        var variables:URLVariables = new URLVariables(); 
        variables.p = pass;             
        request.data = variables; 

        var requestor:URLLoader = new URLLoader(); 
        requestor.addEventListener( Event.COMPLETE, loginRequestComplete ); 
        requestor.addEventListener( IOErrorEvent.IO_ERROR, httpRequestError ); 
        requestor.addEventListener( SecurityErrorEvent.SECURITY_ERROR, httpRequestError ); 
        requestor.load( request ); 
    } 

好吧,我终于成功了

我从ide中创建的两个文本字段中获取用户名和密码

username textfield被设置为multiline,这在联机或调试器版本中没有引起任何问题,但在我的android设备上的textfield中添加了一个换行符,导致我的api返回400

将其更改为单行文本字段并解决了问题


疯狂:)

我觉得上面的代码很好。。。也许您可以添加一个HTTPStatusEvent侦听器来查看您的服务器是否以任何方式响应(错误或完成除外)。它返回为400,这是当用户凭据不正确时我应该得到的。唯一的问题是它们绝对正确。当我在调试播放器中执行此操作时,完全相同的用户和过程工作。