好的,所以我有一个PHP肥皂客户端调用一个方法,并获得一些正确的信息,它可以抓住简单的类型,如字符串甚至对象,但是当它去到一些类型的数组(在这种情况下是字符串)它总是作为一个空对象返回。我试着将它转换为数组和其他许多东西,但是我使用它的每个选项总是返回相同的结果。php肥皂客户端数组的字符串返回为空对象
下面是一些背景资料:
这是我使用eclipse的帮助下用Java创建Web服务。我还自动生成了一个Java客户端,以在使用php创建客户端之前测试Web服务。我创建了多个使用自动生成的Java客户端(代理类)的测试用例,并成功返回了正确的期望值。换句话说,java毫不费力地抓住这串字符串并向我展示每个值。我这样做是为了确定问题是服务器端还是客户端,到目前为止它更多地指向客户端。下面,php的soap客户端有一个很好的功能,如果你设置选项包含(“trace”=> 1),你可以调用__getLastResponse()来查看响应xml的样子,所以这里是:
< ?xml version="1.0" encoding="utf-8"?>
< soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
< soapenv:Body>
< getAllCarClassesIdsAsWsCarClassIdsResponse xmlns="X">
< getAllCarClassesIdsAsWsCarClassIdsReturn>
< carClassIds>
< carClassIds>X< /carClassIds>
< carClassIds>X< /carClassIds>
< carClassIds>X< /carClassIds>
< carClassIds>X< /carClassIds>
< carClassIds>X< /carClassIds>
< carClassIds>X< /carClassIds>
< carClassIds>X< /carClassIds>
< carClassIds>X< /carClassIds>
< carClassIds>X< /carClassIds>
< carClassIds>X< /carClassIds>
< /carClassIds>
< /getAllCarClassesIdsAsWsCarClassIdsReturn>
< /getAllCarClassesIdsAsWsCarClassIdsResponse>
< /soapenv:Body>
< /soapenv:Envelope>
请注意,出于安全目的,某些值已被替换为X.另外,xml在左括号后有一个额外的空格,因为我找不到其他方式发布xml的方法。如果很难阅读,我很抱歉。
重点是响应显示正确的值(那些X应该在一个字符串数组中),但是我仍然看到一个空白对象。以下是完整的响应对象的的var_dump:
object(WsCarClassIds)#4 (1) {
["carClassIds"]=>
object(stdClass)#5 (0) {
}
}
下面是该对象的使用get_object_vars后的var_dump()就可以了:
array(1) {
["carClassIds"]=>
object(stdClass)#5 (0) {
}
}
并且在下面接着是该对象的一个的var_dump它的var_dump铸造到一个数组使用(阵列)$ carClassIds:
object(stdClass)#5 (0) {
}
array(0) {
}
在情况下,信息是有帮助的,这里是一个位,它包含了“复合型”那应该是WSDL文件的字符串数组:
< complexType name="ArrayOf_xsd_string">
< sequence>
< element maxOccurs="unbounded" minOccurs="0" name="item" type="xsd:string"/>
< /sequence>
< /complexType>
另外,我想补充一点,我想已经添加的选项数组里面的“SOAP_USE_XSI_ARRAY_TYPE”功能实例化SOAP客户端时。这是许多论坛处理“ArrayOf_xsd_string”失序问题的建议。添加选项没有效果。我试过把这个添加到我的代码顶部: ini_set('soap.wsdl_cache_enabled',0); 它告诉客户端禁用wsdl缓存,这也导致没有变化。
我在这里提供了很多信息,但我愿意提供其他任何可能需要解决此问题的信息。我一直在为此工作了近2天,并且似乎找不到解决方案。任何帮助将不胜感激,谢谢。
-Asaf