我正在尝试通过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格式,但我在此响应字符串中看不到任何用处。请帮忙!
答案 0 :(得分:2)
如果$location
包含XML,那么输出可能是正确的,但不会在浏览器中“显示”(除非发送了像text/plain
这样的内容类型标题)因为您的浏览器没有t显示(它认为是什么)标签/元素。您需要在$location
中对“XML字符串”进行编码,例如<foo>
到<foo>
。尝试:
echo htmlentities(print_r($locations, true));
...或:
header("Content-Type: text/plain");
var_dump($locations);
...或只是浏览器中的“查看来源”。