API-интерфейс SOAP Barnes and Noble с использованием PHP - PullRequest
0 голосов
/ 27 сентября 2010

Я новичок в SOAP и пытаюсь подключиться к Barnes и Noble SOAP API с помощью встроенных в мыло функций php5.

http://www.php.net/manual/en/class.soapclient.php

Мой вопрос: есть ли у кого-нибудь документация или опыт использования системы Barnes and Noble? Я ходил туда-сюда со службой поддержки и чувствую, что они предполагают, что мы должны просто это выяснить.

Код ошибки, который я получаю, - «HTTP», а строка ошибки - «Метод не разрешен».

Вот как говорит парень из службы поддержки, как должен выглядеть мой заголовок.

<?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>

Я даже не уверен, что это проблема. Любая помощь будет потрясающей.

1 Ответ

0 голосов
/ 30 сентября 2010

Чтобы получить дочерние узлы вместо пар ключ / значение элемента, необходимо передать параметр как объект.

$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 );  

Это выведет то, что, по словам парня из службы поддержки, должно работать. Я думаю, вы также можете создать массив и напечатать его для объекта, но я еще не пробовал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...