2012-06-29 85 views
2

我有什麼我認爲是一個ByteArray。當在字符串中使用urlencode,我得到這個數據...如何在PHP中使用Amf ByteArray字符串?

%0A%82%03%01%11SaleDate%0DToYear%0DYardId%15BuyNowOnly%0BState%0BModel%0FStockId%11FromYear%11FullText%13Inventory%11Category%09Make%0FOrderBy%1DOrderDirection%0FPageNum%11PageSize%01%01%06%05-1%02%06%01%01%01%01%06%0F1024187%06%09Sale%01%01%06%13RunNumber%06%07Asc%04%01%04d 

我在看PHP函數解壓,並試圖unpack('c4char/Xstr/...')其中X是A,H,H,試圖拉「SaleDate 「串出來,但我不能讓它工作。

可能是完全錯誤的方法。我是否需要編寫某種定製的解包器?

我甚至不知道我在這裏處理的是什麼,它是Flash文件的輸出,所以我認爲這是一個Amf「ByteArray」,但是我不知道如何解析它。

尋找甚至只是一個方向,開始尋找如何操縱/解析/重建這樣的東西。最終,我希望能夠通過一個函數來運行它,獲得一個關聯數組,改變一些值,重新包裝它,然後以快樂的方式發送它。

我認爲這是AMF3這是消息部分的數據。

我想如果有一個「主要」問題,我該如何簡單而安全地處理該數據串?

感謝您的任何線索。

+0

嗨達斯汀,我相信這只是一個網址編碼的字符串,你發送到PHP而不是實際的AMF,但是如果你是谷歌的AMFPHP http://cookbooks.adobe.com/post_AMFPHP___Flex_4_demo-16508.html你可能還想考慮使用Zend,這是一個PHP框架(我相信包括AMFPHP),您必須向Google瞭解有關安裝/配置的詳細信息,但一旦設置完成,將創建一個簡單的方法將對象從PHP對象序列化到AS3對象(只需要在PHP對象中設置一個與AS3對象完全限定名相對應的_explicitType) – shaunhusain

+0

實際上,正如我所提到的,我「urlencoded」它以便顯示字節。未編碼形式的字節只是空格,因爲它們不是真正的字符。是的,我查看了Zend_AMF和AmfPHP,如果你看看'Amfphp_Core_Amf_Types_ByteArray',他們所做的只是保存字符串,我找不到任何操作字符串的東西。我沒有發送數據「到」PHP,這是我在PHP中的數據,我試圖找出如何創建這個字符串,或安全地操作它。 –

回答

0

據我所知,這似乎是一個公關專用於供應商的專用編碼方法。他們使用「字節數組」來提高有效載荷的靈活性。有沒有一種簡單的方法來處理這個問題,而沒有完全逆向工程編碼和解碼算法。

1

爲了簡單起見,有許多AMF反序列化器都是開源的,儘管AMF3相當簡單,但在這裏不推出自己的代碼很有意義。

我碰到GitHub上這個鏈接看起來有前途的傳來:

https://github.com/silexlabs/amfphp-2.0

你可能不想滾動整個框架,但或許可以推出這種:

/core/amf/Deserializer.php

/core/amf/Serializer.php

+0

是的,我有這個,這是反序列化的結果。反序列化器返回一個'Amfphp_Core_Amf_Packet',並在數據包中包含標題和消息。在消息中有一個帶有「Amfphp_Core_Amf_Types_ByteArray」的消息,它只有上面的字符串存儲在一個變量中。沒有任何操作功能或我可以看到的進一步解碼。這已經從原始的AMF數據包中反序列化了。試圖弄清楚如何操縱它。 –

+0

嗯,你試過反序列化bytearray了嗎?是的,這看起來像一個amf3數據包,bytearray將是另一個amf3數據包。 – ansiart

+0

儘管我確實看到了你的問題,但所有這些反序列化器都有這些額外的代碼來處理類引用等,而你只需要一個簡單的對象。將環顧一下更多,這必須存在的地方 – ansiart

相關問題