2013-04-20 133 views
0

我得到了一個應用程序,該應用程序爲其接口使用了Flash,並且我想從此應用程序中提取信息,並在我自己的應用程序中解析/使用它(處理數據,一個mysqldb中的基本要素等)。 .swf文件是用AS2編寫的,可以很容易地修改。所以我的目標是發送信息(真的只是信息,能夠發送數字(至少體面的大小)將使我能夠以任何方式實現我自己的編碼和分區協議),我當然不會挑剔的手段。將消息從沙盒發送到自定義應用程序

這是我目前的做法(不是我自己的想法,要歸功於我koreanrandom.org僅僅用自己的源來學習。):

  • 使用DokanLib掛載虛擬文件系統(和實施getFileInformation -handler )
  • 使用LoadVars的AS2-環境中與參數,如"../.logger/@encoded_information"
  • 因爲getFileInformation得到訪問的文件名作爲參數,我可以對其進行解碼,把若干個重新走到一起(如果他們不得不分裂,窗戶似乎並不喜歡文件名w ith幾百個字符長度)並使用解碼後的數據

但是,我的應用程序經常會導致藍屏(不問爲什麼。我沒有任何線索,藍屏信息總是不同),而且koreanrandom.org上的開發人員也不喜歡被問到太多問題,所以我來問這裏是否有其他方式將信息從沙盒閃存環境傳遞給準備好的聽衆。

我開始考慮奇怪的東西(好吧,濫用虛擬文件系統&作爲信息傳輸方式的文件名可能也很奇怪 - 但它仍然是一個偉大的想法),如挑起某些Windows函數被調用和與全球勾手合作,但我還沒有掌握認真的計劃。

「通常」像通過這樣不要方法訪問Web服務器的方法似乎工作:

var target_mc = createEmptyMovieClip("target_mc", this.getNextHighestDepth()); 
loadVariables("http://127.0.0.1/Tools/indata.php", "target_mc", "GET"); 

indata.php就已經創建了一個文件,如果它被訪問,但它沒有。)

XMLSocket不工作或者,我試圖下面的代碼示例(在端口12345使用netcat -l):

Logger.add("begin"); 
var theSocket:XMLSocket = new XMLSocket(); 
theSocket.onConnect = function(myStatus) { 
    if (myStatus) { 
     Logger.add("XMLSocket sucessfully connected") 
    } else { 
     Logger.add("XMLSocket NO CONNECTION"); 
    } 
}; 
theSocket.connect("127.0.0.1", 12345); 
var myXML:XML = new XML(); 
var mySend = myXML.createElement("thenode"); 
mySend.attributes.myData = "someData"; 
myXML.appendChild(mySend); 
theSocket.send(myXML); 
Logger.add("socket sent"); 

沒有按在所有要麼將不起作用,記錄器的輸出只是beginsocket sent

註釋:記錄儀是由人從koreanrandom.org創建並依賴於他們的杜坎實現,這從來沒有引起藍屏我。雖然我的執行過程中沒有發現我的錯誤,所以我開始尋找解決我的問題的其他方法。

編輯:你的「質量信息系統」到底怎麼了?顯然它不喜歡我使用標籤「轉義」和/或「信息」。

+0

您應儘量避免在句子中使用很多(長)括號,這會打破流程並使其難以閱讀。謝謝! – timss 2013-04-20 03:22:03

回答

0

嗯,很難說,嘗試sendAndLoad代替的loadVariables

例如:

var result_lv:LoadVars = new LoadVars(); 
var send_lv:LoadVars = new LoadVars(); 
send_lv.variable1=value1; 
send_lv.variable2=value2; 

    f=this;//zachytka 

result_lv.onLoad = function(success:Boolean) { 
    if (success) { 
trace("ok"); 
    } else { 
    trace("error"); 
    } 

}; 

send_lv.sendAndLoad("http://127.0.0.1/Tools/indata.php", result_lv, "GET"); //you may also use POST 

這應該工作。它不工作的原因也可能是閃存安全設置。嘗試將內容移動到真實服務器或打開flash settings manager(還有一個alternative online version),並將127.0.0.1添加到受信任域和/或測試文件位置到受信任位置(我使用C:*)

相關問題