PHP - 调用.net SOAP服务,Result对象是空字符串?

时间:2012-07-18 15:41:36

标签: php .net soap wsdl

我正在尝试通过PHP与.NET Web服务进行交互。我能够连接到服务,我可以调用getFunctions并返回所有服务函数的列表。我使用soapUI来测试Web服务,当我使用soapUI时,所有请求都完美无缺。

但是,每当我使用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);

var转储的输出如下:

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

我遇到的第一个问题是......“空”字符串怎么能长835807个字符?我的第二个也是更明显的问题是数据在哪里,为什么我无法访问它? soapUI显示响应是XML格式,但我在此响应字符串中看不到任何用处。请帮忙!

1 个答案:

答案 0 :(得分:2)

如果$location包含XML,那么输出可能是正确的,但不会在浏览器中“显示”(除非发送了像text/plain这样的内容类型标题)因为您的浏览器没有t显示(它认为是什么)标签/元素。您需要在$location中对“XML字符串”进行编码,例如<foo>&lt;foo&gt;。尝试:

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

...或:

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

...或只是浏览器中的“查看来源”。