这段代码是我wsdl的一小部分。在这里,我还没有理解
<s:sequence>
<s:any/>
</s:sequence>
请告诉我这是什么
<s:element name="CalculStudents">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="doc">
<s:complexType mixed="true">
<s:sequence>
<s:any/>
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
使用php我在下面调用此函数是我的代码
$client = new SoapClient("some.wsdl");
$params = array("any"=>'');
$result = $client->CalculStudents(array('doc'=>$params));
但它正在抛出错误
Exception Error! Server was unable to process
request.Object reference not set to an instance of an object.
告诉我如何解决这个问题。这是一个php调用错误还是wsdl错了?
答案 0 :(得分:1)
在XML Schema中,the any
element是一种指定“任何非空元素序列”的方法。
所以你的WSDL说,“这个方法可以接受任何数据,并且可能会返回任何数据。”这显然是完全虚假的,而且你没有没有 WSDL就好了。此时您唯一的办法是向API供应商大吼大叫,并祈祷您最终获得有用的文档。
答案 1 :(得分:0)
<xs:any>
id = xs:ID
maxOccurs = ( xs:nonNegativeInteger | “unbounded” ) : “1”
minOccurs = xs:nonNegativeInteger : “1”
namespace = ( (“##any” | “##other” ) | list of (xs:anyURI | “##targetNamespace” | “##local”) ) ) : “##any”
processContents = (“skip” | “lax” | “strict”) : “strict”
##any: any element from any namespace
##other: any element from any namespace other than the target
##targetNamespace: any element from the target
跳过:不要尝试验证这些元素(通过查找架构) lax:尝试验证但如果找不到架构则不要抱怨 strict:如果找不到模式,则尝试验证和错误
$params = array("id"=>'',"maxOccurs"=>'',"minOccurs"=>'',"namespace"=>'',"processContents"=>'');
$result = $client->__soapCall("CalculStudents",array("any"=>$params));