Flash 中的空 xml 响应
Posted
技术标签:
【中文标题】Flash 中的空 xml 响应【英文标题】:Empty xml response in flash 【发布时间】:2018-08-27 09:29:38 【问题描述】:我正在对旧的 Flash 游戏进行逆向工程,并在登录过程中将 POST 请求发送到服务器。 ActionScript2:
req.username = inicial.login_mc.username_txt.text;
req.password = inicial.login_mc.password_txt.text;
xmlResponse = new LoadVars();
xmlResponse.onLoad = function()
xml = new XML(xmlResponse.xml);
trace("login xml: " + xml);
user = xml.childNodes[0];
;
url_login = "api/auth/user";
req.sendAndLoad(url_login, xmlResponse, "POST");
请求:
Request URL: http://localhost:3000/api/auth/user
Request Method: POST
Status Code: 200 OK
Remote Address: [::1]:3000
Referrer Policy: no-referrer-when-downgrade
username: aaaa
password: aaaa
我的回答:
Connection: keep-alive
Content-Length: 58
Content-Type: application/xml; charset=utf-8
Date: Sun, 18 Mar 2018 20:19:50 GMT
ETag: W/"3a-G4M/BpWRvMgDdvlmOtNMapl/lLw"
X-Powered-By: Express
<response hello="world"><hi>howdoing</hi></response>
问题:flash 没有得到任何响应,并且 xml 始终为空。 flashlog.txt:
Warning: getClassStyleDeclaration is not a function
login xml:
Content-Type: text/xml 也不行。
可能是什么?
【问题讨论】:
【参考方案1】:这可能对你有帮助
var my_xml = new XML();
var myLoginReply_xml = new XML();
myLoginReply_xml.ignoreWhite = true;
myLoginReply_xml.onLoad = function(success)
if (success)
// xml response with success
else
// failure
;
my_xml.sendAndLoad("YOUR_URL", myLoginReply_xml);
【讨论】:
如何更改 swf 代码?几周前我尝试了一些工具,但没有一个能奏效。【参考方案2】:如果你是My response
(引用如下):
我的回答:
Connection: keep-alive
Content-Length: 58
Content-Type: application/xml; charset=utf-8
Date: Sun, 18 Mar 2018 20:19:50 GMT
ETag: W/"3a-G4M/BpWRvMgDdvlmOtNMapl/lLw"
X-Powered-By: Express>
<response hello="world"><hi>howdoing</hi></response>
...是您返回到 AS2 的内容(进入String
)然后您可以从该字符串中提取 XML。
看起来这部分是您的 XML 数据:
<response hello="world"><hi>howdoing</hi></response>
下面的代码有一个提取为 XML 的示例(例如:也可以考虑 ParseXML
方法):
var txt_response :String = ""; //original response string
var txt_XML :String = ""; //(extracted) string to be converted into XML object
//# //////////////////////////////////////////////////////////
//# 01) Get the Response :
txt_response = "Connection: keep-alive\nContent-Length: 58\nContent-Type: application/xml; charset=utf-8\nDate: Sun, 18 Mar 2018 20:19:50 GMT\nETag: W/\"3a-G4M/BpWRvMgDdvlmOtNMapl/lLw\"\nX-Powered-By: Express\n<response hello=\"world\"><hi>howdoing</hi></response>";
trace("txt_response : \n" + txt_response);//check if expected Response text
//# //////////////////////////////////////////////////////////
//# 02) Extract XML data from Response :
//# using: substring (start_Pos:Number, END_Pos:Number);
var pos_Start :Number = 0;
var pos_End :Number = 0;
pos_Start = txt_response.indexOf("<response");
pos_End = txt_response.indexOf("/response>");
txt_XML = txt_response.substring( pos_Start, pos_End+10); //+10 to reach end of this word (include it)
trace("txt_XML : \n" + txt_XML); //check if correct extract before using as XML
//# //////////////////////////////////////////////////////////
//# 03) Convert extracted text to XML :
var my_xml:XML = new XML(txt_XML);
trace( "checking XML attribute ( hello ) : " + my_xml.firstChild.attributes.hello); //gives: world
使用my_xml.firstChild.attributes.hello
将world
显示为条目。这是你需要的吗?
【讨论】:
以上是关于Flash 中的空 xml 响应的主要内容,如果未能解决你的问题,请参考以下文章
如何找出 json 响应是 android 中的空 JSON 对象?