2013-02-21 129 views
0

我有一個使用一個專有的加密程序,像這樣加密的XML文檔: exec($programName, $outputArr, $returnVal);如何通過XML傳輸PHP數組?

所得陣列($outputArr)是序列化並作爲在MySQL斑點存儲。我正在通過Web界面按需提供此加密陣列。基本上反序列化並在飛行中寫入文件。

現在需求發生了變化,我需要將此加密陣列提供給另一臺服務器,該服務器使用.net/c#,並且這些服務器又將託管Web界面。我們正在使用響應GET請求併發出XML響應的REST API。

我嘗試將數組寫入臨時文件,然後使用file_get_contents($tempFile)檢索文件的內容,然後對產生的字符串進行URL編碼,並將其發送到我發送的XML響應的內部。

當然,當新的Web界面將其寫入文件(在URL解碼之後)時,它不會像它應該的那樣。因此,我的意思是我們的專有程序在閱讀這個新的結果文件時會引發錯誤......在某個地方,有數據損壞發生。

我們還嘗試了一種C#序列化庫,它將PHP數組反序列化爲一個c#基元類型,但這不是一個好的解決方案,因爲它一直在拋出一堆錯誤。

有沒有更好的方法來做到這一點?

+0

都能在這裏找到。 http://stackoverflow.com/questions/1397036/how-to-convert-array-to-simplexml – 2013-02-21 00:23:17

+0

我會嘗試,但我不是一個關聯數組,這可能會創建無效的XML標記名稱... – 2013-02-21 00:31:50

+1

嘗試JSON編碼,然後打印數組。 http://php.net/json_encode – 2013-02-21 00:41:16

回答

0

爲什麼不直接訪問工作版本,發送到新的服務器之前重新操作它......

<!-- Some XML based wrapper or other logic/output --> 
<?php 
    echo file_get_contents($url_to_working_web_interface); 
?> 
+0

這是一個很好的建議,但Web界面上沒有固定的資源。它基本上利用會話信息來生成一個動態鏈接,然後只是將數組放入瀏覽器並要求瀏覽器將其視爲要下載的文件。 – 2013-02-21 00:35:47

+0

,雖然這確實讓我想知道......應該使用'file_get_contents()'還是其他類似'readfile()'或'fpassthru()'或者只是'fread()'? – 2013-02-21 00:37:44

+0

我希望cURL可以處理它... http://php.net/manual/en/book.curl.php – 2013-02-21 01:28:22