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.helloworld 显示为条目。这是你需要的吗?

【讨论】:

以上是关于Flash 中的空 xml 响应的主要内容,如果未能解决你的问题,请参考以下文章

快速删除json响应中的空值

如何找出 json 响应是 android 中的空 JSON 对象?

在 PHP 中查询服务器并接收 XML 响应

Spyne:为啥我收到 json 请求的空响应?

如何避免来自 HttpURLConnection 的空 HTTP 响应出现 EOFException?

Extjs 6 + Spring Rest:401 错误的空响应