[Flex] flex与校内接口(iframe方式)

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>

各个参数取值参见开发文档和之前获得的参数。

原文地址:https://www.cnblogs.com/felixfang/p/1423435.html