2012-07-18 54 views
1

我想通過PHP與.NET Web服務交互。我可以連接到服務,我可以調用getFunctions並返回所有服務功能的列表。我使用soapUI來測試web服務,並且當我使用soapUI時,所有請求都完美地工作。PHP - 調用.net SOAP服務,Result對象是空字符串?

但是,無論何時我使用PHP來調用其中一個服務函數,我都會得到一個看似空的響應。

代碼:

$client = new SoapClient("http://soapservice.com/soap.asmx?WSDL"); 

$params = array(); 

$params["userName"] = 'myUserName';  
$params["password"] = 'somePass1234'; 

$locations = $client->GetStuff($params); 

var_dump($locations); 

$locations = $client->GetStuff($params)->GetStuffResult;  

var_dump($locations); 

變種的輸出轉儲如下:

object(stdClass)#35 (1) { 
    ["GetStuffResult"]=> 
    string(835807) "" 
} 
string(835807) "" 

的第一個問題我已經是...怎麼能一個「空」的字符串是835807個字符長?我的第二個也是更明顯的問題是數據在哪裏,爲什麼我不能訪問它? soapUI顯示響應是用XML表示的,但我在這個響應字符串中看不到任何用處。請幫忙!

回答

2

如果$location包含XML,那麼很可能輸出是正確的,但不會在瀏覽器中「顯示」(除非發送類似text/plain這樣的內容類型標題),因爲瀏覽器不顯示(它認爲是什麼be)標籤/元素。您需要編碼$location中的「XML字符串」,其中包含例如<foo>&lt;foo&gt;。嘗試:

echo htmlentities(print_r($locations, true)); 

...或:

header("Content-Type: text/plain"); 
var_dump($locations); 

...或者只是在你的瀏覽器 「查看源文件」。

+0

這正是我所需要的......不能相信我所要做的就是查看源代碼! – DirtyBirdNJ 2012-07-18 16:03:19