我尝试使用Lotus Domino V7空闲时间Web服务。
我编码:
<?php
$soap = new SoapClient('http://foo.com/cppfbws.nsf/busytimelookup?WSDL');
print_r( $soap->__getFunctions() ); //Array ( [0] => RESPONSESTRUCTURE LOOKUP(REQUESTSTRUCTURE $REQUEST) )
$soap->lookup(array(''), array('Bob'), array(''), '2007-02-26 00:01', '2012-02-26 23:59');
//or
$soap->__soapCall('lookup', array(array(''), array('Bob'), array(''), '2007-02-26 00:01', '2012-02-26 23:59'));
?>
结果:
Fatal error: SOAP-ERROR: Encoding: object has no 'REQUESTORS' property
你有什么想法吗?
仅限我提供的文件:
的 cppfbws.nsf / busytimelookup WSDL :
<wsdl:portType name="busytime">
<wsdl:operation name="LOOKUP" parameterOrder="REQUEST">
<wsdl:input message="impl:LOOKUPRequest" name="LOOKUPRequest"/>
<wsdl:output message="impl:LOOKUPResponse" name="LOOKUPResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:message name="LOOKUPResponse">
<wsdl:part name="LOOKUPReturn" type="impl:RESPONSESTRUCTURE"/>
</wsdl:message>
<wsdl:message name="LOOKUPRequest">
<wsdl:part name="REQUEST" type="impl:REQUESTSTRUCTURE"/>
</wsdl:message>
<complexType name="REQUESTSTRUCTURE">
<sequence>
<element name="REQUESTORS" type="impl:ArrayOf_xsd_string"/>
<element name="ATTENDEES" type="impl:ArrayOf_xsd_string"/>
<element name="DETAILS" type="impl:ArrayOf_xsd_string"/>
<element name="START" type="xsd:string"/>
<element name="END" type="xsd:string"/>
</sequence>
</complexType>
此http://www.ibm.com/developerworks/lotus/library/domino7-free-time/ :
attendees[0]="Peter Pan"; //name of the first person
attendees[1]="Mary Poppins"; //name of the second person
requestors[0]=""; //Web service does not require this parameter
details[0]=""; //Web service does not require this parameter
答案 0 :(得分:1)
请求格式和区分大小写的问题。
我的最终代码:
<?php
$soap = new SoapClient('http://foo.com/cppfbws.nsf/busytimelookup?WSDL', array('login' => 'root', 'password' => 'root'));
$request = array('REQUESTORS' => array(''), 'ATTENDEES' => array('root'), 'DETAILS' => array(''), 'START' => '2011-11-30 01:00', 'END' => '2011-12-30 18:00');
$result = $soap->lookup($request);
$i = 0;
foreach ($result->ATTENDEES as $r) {
echo 'User : '.$r->ATTENDEE.'<br/><br/>';
foreach ($r->BUSY as $b) {
echo 'Busy interval #'.$i++.'<br/>';
echo 'Start : '.$b->START.'<br/>';
echo 'End : '.$b->END.'<br/><br/>';
}
}
?>