2012-08-17 19 views
0

這是聯合xmlrpc問題。我有一個來自.wav文件的數據串。我讀入file_get_contents()中的文件,然後我必須將該信息提交給xmlrpc服務器(我沒有創建)。它採用base64中的.wav音頻數據。我試過使用base64_encode(),但是它也返回「字符串」類型。我認爲This php guidexmlrpc_set_type會有所幫助,但是這會返回一個包含一個包含base64編碼字符串的數組的對象。使用php將類型「字符串」轉換爲base64

有沒有辦法將我正在使用的字符串設置爲base64類型?

這是我迄今爲止,即產生錯誤:

$data = base64_encode(file_get_contents('myfile.wav', NULL, NULL, 44)); 
$request = xmlrpc_encode_request('service',array('AudioData'=>$data)); 

我曾經嘗試這樣做,以及:

$data = file_get_contents('myfile.wav', NULL, NULL, 44); 
$request = xmlrpc_encode_request('service',array('AudioData'=>xmlrpc_set_type($data, 'base64'))); 

這是我得到的迴應:

["faultCode"]=> int(0) ["faultString"]=> string(155) "request contains string value where base64 expected 

編輯:

我知道base64不是一種類型。很明顯,我使用的服務器不會除了一串base64編碼數據,所以我的問題是如何做到這一點。

+0

沒有在PHP數據類型的base64。 Base64是二進制數據的字符串表示。 – nkr 2012-08-17 13:35:46

+0

我有點想,它是有道理的,但是當我傳遞一串base64編碼數據時,Web服務會因爲它是一個字符串而嚇壞了? – Ryan 2012-08-17 13:38:08

+0

嗯,這個錯誤顯然很奇怪,因爲base64編碼總是以字符串形式出現。我猜它不能識別你的bas64字符串?你確定這是你的最終造成的問題嗎? – Sammaye 2012-08-17 13:45:23

回答

0

xmlrpc_set_type函數可用於在XML-RPC請求中將值標記爲特定類型(base64或datetime)。它返回一個布爾值,指示操作是否成功。

基本上,發生的情況是該值被包裝在一個標準的PHP類對象及其類型中,並且作爲對xmlrpc_set_type的引用傳遞的變量包含此對象而不是原始原始值。

當調用xmlrpc_encode_request,作爲參考,以聲明值類型先前傳遞給xmlrpc_set_type相同的變量,應嵌入在$params數組作爲第二個參數傳遞。

請注意,這些功能仍被認爲是實驗性的,應非常小心使用。

實施例:

<?php 

$method = 'app.service'; 

// $value contains raw content 
xmlrpc_set_type($value, 'base64'); 

// $request contains base64 encoded content 
$request = xmlrpc_encode_request($method, array($value); 
相關問題