flex与校内交互一直是开发时最大的一道坎儿,一帮人足足倒腾了半个月终于交互成功了,不发篇帖子记录一下我对得起谁?
篇幅原因,这里只讲flex与校内的交互,其他的常用工具网上相对来说帖子比较多,就不说了
校内在任何人进入这个应用界面后,都会url追加参数的方式向应用传递用户的初始信息,包括session_key,api_key等等。
如果是asp,很好办,直接用Request.QueryString()就可以得到这些参数的值。但是flex的httpservice,webservice只能发送后再接受,怎么做到单方面接受这些值呢?
flex是可以单方面接受这些数据的,但是需要在开发校内是吧你开发的应用属性中的Callback URL改为你开发后生成的swf
然后flex的接受代码为
xn_sig_in_iframe=this.parameters.xn_sig_in_iframe;
xn_sig_time=this.parameters.xn_sig_time;
xn_sig_added=this.parameters.xn_sig_added;
xn_sig_user=this.parameters.xn_sig_user;
xn_sig_session_key=this.parameters.xn_sig_session_key;
xn_sig_expires=this.parameters.xn_sig_expires;
xn_sig_api_key=this.parameters.xn_sig_api_key;
就会发现本地定义的这些变量都已经被赋上值了。
校内上虽然是以url追加的方式传递参数,不过这些并不在地址栏里显示出来,就是地址栏里是看不到的“?……=……&”这类东西的,但是大家查看一下当前网页的源码,就可以发现在那个载入flash部分的代码中swf文件的路径后面被追加了很多字符,就是校内传来的参数。
之后很简单了,按照校内开发文档的要求,用httpservice方法(webserivice应该也可以,不过我没试过)向指定的网址post相应的参数,校内就会已XML的形式返回你要的信息,具体可以参照开发文档。http://dev.xiaonei.com/wiki/API
还有,在获取用于基本信息,也就是用method=xiaonei.users.getInfo方法的时候,按照文档发送好像是不可以的,尝试了一阵子后,发现代码为
<mx:HTTPService id="getInfo" url="http://api.xiaonei.com/restserver.do" result="getInfoResult()" method="POST" showBusyCursor="true">
<mx:request>
<method>{this.method}</method>
<api_key>{this.xn_sig_api_key}</api_key>
<v>{this.v}</v>
<session_key>{this.xn_sig_session_key}</session_key>
<uids>{this.xn_sig_user}</uids>
<format>{this.format}</format>
</mx:request>
</mx:HTTPService>
各个参数取值参见开发文档和之前获得的参数。