Этот код является небольшой частью моего 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 неправильной?
В XML-схеме any
элемент является способом указания «любой непустой последовательности элементов вообще».
Таким образом, у WSDL есть: «Этот метод может принимать любые данные вообще и потенциально может возвращать любые данные». Это, очевидно, полностью подделка, и вы немного лучше, чем без WSDL. Ваш единственный выход в этот момент – это кричать на продавца API и молить вас в конечном итоге получить полезную документацию.
<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
skip: не пытайтесь проверить эти элементы (ища схему) lax: попытка проверки, но не жалуйтесь, если вы не можете найти схему строгой: попытайтесь выполнить проверку и ошибку, если вы не можете найти схему
$params = array("id"=>'',"maxOccurs"=>'',"minOccurs"=>'',"namespace"=>'',"processContents"=>''); $result = $client->__soapCall("CalculStudents",array("any"=>$params));