`
flymz
  • 浏览: 3801 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

Flex解析安卓网代码片段

阅读更多
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" title="飞梦论坛发帖小助手V1.1" layout="absolute" fontSize="12" width="900" height="600" showStatusBar="false" backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#C4CCF2, #C4CCF2]">
<mx:Style source="assets/css/flex_skins.css"/>
<mx:Script>
<![CDATA[
import com.flymz.luntan.AnzhuoParse;
import mx.rpc.events.ResultEvent;
import com.flymz.util.XmlUtil;
import com.flymz.SettingWindow;
import mx.managers.PopUpManager;
import mx.controls.Alert;
import mx.utils.StringUtil;
import com.flymz.luntan.CsdnParse;
import mx.events.ListEvent;
import mx.events.ItemClickEvent;

private var csdnParse:CsdnParse;

private var anzhuoParse:AnzhuoParse;

/**改变论坛*/
private function changeLt(event:ListEvent):void{
var slabel:String = event.currentTarget.selectedLabel;
switch(slabel){
case 'CSDN':
csdnParse = new CsdnParse(this);
/**获取用户信息*/
XmlUtil.readXml(XmlUtil.USER_XML,userResultHandler);
valicode.visible = true;
logArea.text = '';
csdnParse.logShow('欢迎访问CSDN论坛,正在获取验证码......');
break;
case '安卓网':
anzhuoParse = new AnzhuoParse(this);
valicode.visible = false;
/**获取用户信息*/
XmlUtil.readXml(XmlUtil.USER_XML,userResultHandler);
logArea.text = '';
anzhuoParse.logShow('欢迎使用安卓网发帖小助手.........');
break;
}
}

private function userResultHandler(event:ResultEvent):void{
var children:XMLList = new XML(event.result).children();
for(var i:int=0;i<children.length();i++){
var forumStr:String = children[i].@forum;
if(lt.selectedLabel==forumStr){
userInfo.dataProvider = children[i].children();
break;
}
}
}

/**生成验证码*/
private function genValidateImage():void{
var ltType:String = lt.selectedLabel;
switch(ltType){
case 'CSDN':
csdnParse.genValidateImageAgain();
csdnParse.logShow('重新生成验证码.');
break;
}
}

/**系统登录*/
private function loginSystem():void{
var ltType:String = lt.selectedLabel;
switch(ltType){
case 'CSDN':
if(StringUtil.trim(validateNum.text)==''){
Alert.show('请输入验证码!','提示');
return;
}
if(userInfo.selectedLabel==''){
Alert.show('请选择用户!','提示');
return;
}
csdnParse.userId = userInfo.selectedLabel;
csdnParse.password = userInfo.selectedItem.@password;
csdnParse.validateNum = validateNum.text;
csdnParse.loginSystem();
break;
case '安卓网':
if(userInfo.selectedLabel==''){
Alert.show('请选择用户!','提示');
return;
}
anzhuoParse.loginUser(userInfo.selectedLabel,userInfo.selectedItem.@password);
break;
}
}

/**回复帖子*/
private function replyArt():void{
var ltType:String = lt.selectedLabel;
switch(ltType){
case 'CSDN':
csdnParse.replyArticle();
break;
case '安卓网':
anzhuoParse.replyArticle();
break;

}
}

private function sendNewArticle():void{
Alert.show('系统尚未实现该接口。','提示');
}

private function setting():void{
var pop:SettingWindow = SettingWindow(PopUpManager.createPopUp(this,SettingWindow,true));
pop.x = (this.width-pop.width)/2;
pop.y = (this.height-pop.height)/2;
}
]]>
</mx:Script>
<mx:ApplicationControlBar left="10" right="10" top="10">
<mx:Label text="论坛"/>
<mx:ComboBox prompt="请选择" id="lt" change="changeLt(event)">
<mx:dataProvider>
<mx:String>CSDN</mx:String>
<mx:String>安卓网</mx:String>
</mx:dataProvider>
</mx:ComboBox>
<mx:VRule height="30"/>
<mx:Label text="用户"/>
<mx:ComboBox id="userInfo" labelField="@userName" width="110" prompt="请选择">
</mx:ComboBox>
<mx:HBox id="valicode" visible="false">
<mx:VRule height="30"/>
<mx:Label text="验证码"/>
<mx:TextInput width="81" id="validateNum"/>
<mx:Image id="validateImage" height="35" width="120" click="genValidateImage()" useHandCursor="true" buttonMode="true"/>
<mx:VRule height="30"/>
</mx:HBox>
<mx:Button label="登录" click="loginSystem()"/>
<mx:Button label="回帖" id="replyBtn" click="replyArt()" enabled="true"/>
<mx:Button label="发表新帖" id="newBtn" click="sendNewArticle()" enabled="false"/>
<mx:Button label="设置" click="setting()"/>
</mx:ApplicationControlBar>
<mx:TextArea top="90" left="10" right="10" id="logArea" bottom="10" wordWrap="true" editable="false"/>
<mx:Label text="运行日志监控台" left="10" top="70"/>
<mx:Label top="70" right="30" id="loginState" width="150"/>

</mx:WindowedApplication>


package com.flymz.luntan
{
import flash.events.Event;
import flash.net.URLRequest;

import mx.controls.Alert;
import mx.controls.TextArea;
import mx.core.FlexHTMLLoader;

public class AnzhuoParse
{
public function AnzhuoParse(login:Login)
{
this.login = login;
this._logArea = login.logArea;
html = new FlexHTMLLoader();
}

private var userName:String;

private var password:String;

private var login:Login;

private var _logArea:TextArea;

private var html:FlexHTMLLoader;

/**论坛登录地址*/
private var loginPath:String = 'http://www.hiapk.com/bbs/logging.php?action=login';

private var loginSubmit:String = 'http://www.hiapk.com/bbs/logging.php?action=login&loginsubmit=yes';

/**登录成功后转向的地址*/
private var successPath:String = 'http://www.hiapk.com/bbs/';


/**
* 用户登陆
*/
public function loginUser(userName:String,password:String):void{
this.userName = userName;
this.password = password;
html.load(new URLRequest(loginPath));
html.addEventListener(Event.COMPLETE,completeHandler);
}

/**
* 回复帖子
*/
public function replyArticle():void
{

}

private function completeHandler(event:Event):void{
if(html.window.document.body==null){
logShow('初始化登录失败!');
return;
}
var inner:String = html.window.document.body.innerHTML;
var loc:String = html.location;
logShow(loc);
switch(loc){
case loginPath:
logShow('加载登录页面成功,正在准备登录...');
html.window.document.getElementsByName('username')[0].value=userName;
html.window.document.getElementById('password').value = password;
html.window.document.getElementById('cookietime').checked='checked';
html.window.document.getElementById('loginform').submit();
break;
case loginSubmit:
logShow(inner);
break;
case successPath:
if(inner.indexOf(userName)!=-1){
login.loginState.htmlText = '用户“<u>'+userName+'</u>”登录中.';
login.replyBtn.enabled = true;
login.newBtn.enabled = true;
logShow('用户'+userName+'登录成功!');
}else{
logShow('用户'+userName+'登录失败!可能用户名/密码不正确!');
}
break;
}
}

public function logShow(log:String):void{
_logArea.htmlText = _logArea.htmlText+'安卓网提示:'+log+'\n';
}

}
}
分享到:
评论

相关推荐

    android-技术资料汇总

    #### 15个Android很有用的代码片段 - 提供了可以直接复用到项目中的实用代码示例。 - 如网络请求封装、图片加载优化、线程池管理等。 ### 六、官方文档与指南 #### Google Android程序设计指南 - 官方提供的...

    ReactNative的自动高度webview_JavaScript_下载.zip

    总的来说,`react-native-autoheight-webview-master`可能提供了一个完整的解决方案,包括处理Webview自动高度的React组件和配合使用的JavaScript代码片段。通过理解和使用这个组件,开发者可以轻松地在ReactNative...

    Flutter实战1

    2. **关键代码片段**: ```dart void main() =&gt; runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Counter App', ...

    程序员的新年祝福 Happy New Year

    下面我们将详细解析这些代码片段,并简要介绍涉及的编程语言特性。 1. C 语言:`printf("Happy New Year");` C 语言是一种基础且广泛使用的编程语言,`printf` 函数是用于输出格式化字符串的标准库函数。 2. C++:...

    Adobe Flash 11 Stage3D (Molehill) Game Programming Beginner's Guide

    AGAL (Adobe Graphics Assembly Language) 是一种专为Stage3D 设计的低级图形语言,用于编写顶点着色器和片段着色器。通过掌握AGAL,开发者可以直接控制GPU,从而实现更高效、更复杂的3D效果。 **4. 创建3D 游戏的...

Global site tag (gtag.js) - Google Analytics