1

我正在尝试通过 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 格式的,但我在这个响应字符串中看不到任何用处。请帮忙!

4

1 回答 1

2

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

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

...或者:

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

...或者只是在您的浏览器中“查看源代码”。

于 2012-07-18T15:44:11.090 回答