2017-01-24 45 views
1

我试图使用SMSPVA.com的API,当我复制并粘贴到Firefox的URL它返回JSON值,但在Actionscripts3错误的值出现在输出中。 我的事情我的代码是不正确的。ActionScripts3发布到URL问题

我想通过URL发送数据,并在输出窗口中用“trace”打印响应。

import flash.net.*; 

function URLRequest_method() 
{ 
    var url:String = "http://smspva.com/priemnik.php?metod=get_balance&service=opt4&apikey=HPQjg2cyfY2KhkyAjJft"; 

    var request:URLRequest = new URLRequest(url); 

    request.method = URLRequestMethod.GET; 

    var urlLoader:URLLoader = new URLLoader(); 

    urlLoader.load(request); 

    trace(request.data); 

} 

编辑:

import flash.net.*; 
import flash.events.Event; 

function URLRequest_method():void 
{ 
    var url:String = "http://smspva.com/priemnik.php?metod=get_balance&service=opt4&apikey=HPQjg2cyfY2KhkyAjJf"; 

    var request:URLRequest = new URLRequest(url); 

    request.method = URLRequestMethod.GET; 

    var urlLoader:URLLoader = new URLLoader(); 

    urlLoader.addEventListener(Event.COMPLETE, onLoaderComplete);  
    urlLoader.load(request); 

} 


function onLoaderComplete(event:Event):void 
{ 
    var urlLoader2:URLLoader = event.target as URLLoader ; 
    trace(urlLoader2.data); 
    trace(event.target.data.done); 
} 


URLRequest_method(); 

结果是正确的: “{” 回应 “:” 1" , “平衡”: “0.00”} “

但警告秀” ReferenceError:错误#1069:在String上找不到属性,并且没有默认值。“

什么是错的?

+0

呃,你确定要告诉我们你的apikey吗? – DodgerThud

+0

是的,这是测试用户ID,我从来没有将它用于除测试API之外的任何目的。 –

+0

啊我明白了。关于你的问题,你有尝试过使用GET吗?你说你复制粘贴url到Firefox,你的意思是网址栏还是你为此写了一个测试网站?因为默认情况下iirc浏览器URL是GET请求。 – DodgerThud

回答

0

urlLoader.load(request);是异步操作,你应该听Event.COMPLETE事件获得加载的数据:

UPD:

function URLRequest_method():void 
    { 
     var url:String = "http://smspva.com/priemnik.php"; 
     var postParams:URLVariables = new URLVariables("metod=get_balance&service=opt4&apikey=HPQjg2cyfY2KhkyAjJf"); 

     var request:URLRequest = new URLRequest(url); 
     request.method = URLRequestMethod.GET; 
     request.data = postParams; 

     var urlLoader:URLLoader = new URLLoader(); 

     urlLoader.addEventListener(Event.COMPLETE, onLoaderComplete); 
     urlLoader.load(request); 

    } 

    function onLoaderComplete(event:Event):void 
    { 
     var urlLoader2:URLLoader = event.target as URLLoader; 
     trace(urlLoader2.data); 

     var json:Object = JSON.parse(urlLoader2.data); 
     trace("json.response = ", json.response); 
     trace("json.balance = ", json.balance); 
    } 

输出:

{"response":"1","balance":"0.00"} 

json.response = 1 
json.balance = 0.00 

顺便说一句,你的终端不支持POST方法,只有GET

+0

谢谢,现在请检查新代码并告诉我问题在哪里,如果您可以请写出完整的代码。 –

+0

我更新了我的答案,以获得完整的工作代码 – fsbmain

+0

但为什么我的输出窗口是空的?没有数据没有警告。我在Animate CC中为您的新代码创建了新的ActionScripts3文档。 –