xml — веб-служба импорта xmlport Navision Web Serice с использованием переполнения стека

Я пытаюсь вызвать функцию WebService, которая предоставляет xmlport. Я могу заставить это работать с использованием C #, но не могу понять это с помощью PHP.

Когда я делаю это в C #, я добавляю ссылку на веб-сервис, которая предоставляет мой порт xml моему проекту. Я в основном заполняю узлы XML и могу передать их в свой веб-сервис Codeunit. Я не уверен, как это можно сделать в PHP.

Я разработчик Nav, который работает над проектом Web Integration с разработчиком PHP. Я не очень разбираюсь в PHP, а он мало что знает о Navision.

Верхний снимок экрана — это моя функция Codeunit, представленная в виде веб-службы. Нижний снимок экрана — мой код .Net. Выделенная область показывает, что я добавил ссылку на веб-службу в свой проект, используя URL-адрес веб-службы.

Навигационный блок:

введите описание изображения здесь

.Чистый код:

введите описание изображения здесь

0

Решение

Есть несколько вещей, которые вы должны проверить.
Вы установили метод аутентификации на NTLM? Это делается в файле de CustomSettings.config Сервиса Dynamics NAV и является единственным способом, которым PHP может аутентифицироваться в веб-сервисе NAV.

Вы должны установить это значение:

 <add key="ServicesUseNTLMAuthentication" value="true" />

Вот рабочий пример:
http://blogs.msdn.com/b/freddyk/archive/2010/01/19/connecting-to-nav-web-services-from-php.aspx

0

Другие решения

Шаг 1: Проверка вашей конфигурации

Как gbierkens уже указал, что вы должны убедиться, что NTLM включен в CustomSettings.config файл :

<add key="ServicesUseNTLMAuthentication" value="true" />

Шаг 2: Отправка HTTP-запроса:

Лично мне не очень нравится использовать SoapClient или библиотеки только для отправки ваших HTTP-запросов и обработки ваших ответов. Если вы знаете, как анализировать XML в PHP, вы можете просто использовать cURL и анализировать ответы XML самостоятельно.

В этом случае отправка запроса GET в службу SOAP или Odata может быть действительно такой простой:

// Create curl handle
$ch = curl_init();

// Set HTTP options
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, 'username:password');

// Get & output response (= XML string)
echo curl_exec($ch);

// Close handle
curl_close($ch);

Шаг 3: Анализ вашего ответа:

Анализ ответа SOAP может быть таким простым:

$xml = simplexml_load_string(str_ireplace(['SOAP-ENV:', 'SOAP:'], '', $response));

Замечания :

Если вам не нравится читать и писать необработанные SOAP-сообщения, вы можете использовать Сервисы Navision’s Odata вместо.

Я не только нахожу протокол Odata намного более интуитивным, чем протокол SOAP, он обладает дополнительным преимуществом поддержки Json вместо XML для обмена данными между сервером и клиентом, что делает преобразование из и в стандартные массивы или объекты PHP простым, как круговая диаграмма.

0

По вопросам рекламы [email protected]