Фредди Кристиансен сделал замечательную серию сообщений в блоге с подробным объяснением того, как подключаться к веб-сервисам Nav из разных сред.
Первая часть здесь: Подключение к веб-сервисам NAV из…
Вторая часть: Подключение к веб-сервисам NAV из PHP
Клиент может получить ответ NULL по нескольким причинам. Первая из них - клиентское приложение не может аутентифицироваться на веб-сервисе. Это может произойти, если на стороне сервера вместо NTLM используется протокол SPNEGO. Вам нужно установить ключ «ServicesUseNTLMAuthentication» в CustomSettings.config, как описал Фредди в первом из своих сообщений.
Если вы можете прочитать данные из сервиса, но не можете создать запись, это означает, что запрос успешно проходит аутентификацию, и проблема, скорее всего, в формате SOAP-сообщения.
Это то, что Nav ожидает получить в запросе на создание
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<Create xmlns="urn:microsoft-dynamics-schemas/page/customer">
<Customer>
<No>555554</No>
<Name>NewCustomer</Name>
</Customer>
</Create>
</soap:Body>
</soap:Envelope>
Чтобы добиться такого результата, вы можете заменить стандартную оболочку потока HTTP на обертку NTLMStream (см. пост «Подключение к веб-сервисам NAV из PHP» выше.
Теперь это все, что вам нужно сделать, чтобы прочитать запись клиента:
$client = new NTLMSoapClient("http://192.168.0.101:7047/DynamicsNAV71/WS/".rawurlencode($company)."/Page/Customer");
$resp = $client -> Read(array('No' => '10000'));
Создание новых записей также становится намного проще:
$client = new NTLMSoapClient("http://192.168.0.101:7047/DynamicsNAV71/WS/".rawurlencode($company)."/Page/Customer");
class CustomerWrapper
{
public $Customer;
}
$cw = new CustomerWrapper;
$cw -> Customer -> No = "555554";
$cw -> Customer -> Name = "NewCustomerName";
$cw -> Customer -> E_Mail = "[email protected]";
$resp = $client -> Create($customer);
person
Alexander Drogin
schedule
27.11.2014