我是SOAP的新手,并且一直尝试使用php5内置的soap函数连接到Barnes和Noble SOAP API。
http://www.php.net/manual/en/class.soapclient.php
我的问题是,有没有人使用Barnes and Noble系统有任何文档或经验?我一直与支持者来回走动,我觉得他们认为我们应该能够弄明白。
我得到的错误代码是“HTTP”,故障字符串是“Method Not Allowed”。
这是支持人员说我的标题应该是什么样的。
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<SessionInfo xmlns="http://tempuri.org/SessionInfoHeader">
<User xmlns="">your username goes here</User>
<Password xmlns="">your password goes here.</Password>
</SessionInfo>
</soap:Header>
这就像我能得到它一样接近。
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://tempuri.org">
<SOAP-ENV:Header><ns1:SessionInfo>
<item>
<key>SessionInfo</key>
<value>
<item><key>User</key><value>[username]</value></item>
<item><key>Password</key><value>[password]</value></item>
</value>
</item>
</ns1:SessionInfo>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<searchCriteria/>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
我甚至不确定这是不是问题。任何帮助都会很棒。
答案 0 :(得分:0)
为了获取子节点而不是项目键/值对,您必须将参数作为对象传递。
$client = new SoapClient( 'test.wsdl' );
class SessionInfo {
public $User = 'test@example.com';
public $Password = '12345';
}
$sessionInfo = new SessionInfo();
$soap_headers = new SoapHeader( 'http://tempuri.org/SessionInfoHeader',
'SessionInfo', $sessionInfo );
$client->__setSoapHeaders( $soap_headers );
这将输出支持人员说应该工作的内容。我想你也可以创建一个数组并输入一个对象,但我还没有尝试过。