2012-07-18 58 views
0

這是我的第一個問題,所以不要嚴格判斷。 我有一個對象,我從php服務器到as3(flash)客戶端。這目標是AMF編碼,所以我寫的服務器響應的ByteArray:從bytearray讀int的問題

var ba:ByteArray = new ByteArray(); 
ba.writeUTFBytes(rawData); 

,比我從閱讀的ByteArray對象:

ba.position = 0; 
var response:Object = ba.readObject(); 

對象的部分包含了這樣的數據:

{ 
'money' : 900 
} 

當從ByteArray讀取對象時,我得到的是一個七位數字〜1824344而不是900.但是當我得到表單服務器字符串'900'或者int值等於100時 - 數據正確讀取。

有人有這樣的問題嗎?

+0

你應該使用'readUTFBytes()'而不是'readObject()'嗎? – iND 2012-07-18 22:30:00

+0

不,因爲我收到一個對象 – 2012-07-18 22:41:47

+0

我認爲你需要包含讀取對象的完整代碼,以及它正在閱讀的整個對象。 – iND 2012-07-18 22:56:32

回答

0

你必須按照你寫的相同的方式閱讀。如果您使用writeUTFBytes()寫入內容,則必須使用readUTFBytes()來閱讀它。

在這種情況下,您應該使用writeObject()readObject(),因爲您正在編寫純對象而不是字符串。

+0

上的php服務器獲得。但是我得到一個POST請求&是不是一個字符串? 我會試試看。但在九個小時內。 – 2012-07-19 21:09:40

+0

如果在AMF中編碼響應 - 它不是一個字符串。它被序列化爲二進制數據AS3/AS2對象。 – 2012-07-20 08:18:36

+0

但是現在在你以前的評論中,我發現服務器中的AMF對象以字符串形式傳遞。我猜服務器上的AMF對象被編碼爲Base64(http://en.wikipedia.org/wiki/Base64)。如果是必須獲得Base64解碼器(例如:http://jpauclair.net/2010/01/09/base64-optimized-as3-lib/)並使用它將該字符串轉換爲字節數組。然後從該字節數組中,您可以使用readObject()方法讀取Object。 – 2012-07-20 08:31:27