2014-02-13 3 views
2

У меня проблемы с аутентификацией с SOAP-сервером, к которому я пытаюсь подключиться.Проблема аутентификации SOAP

мне нужно использовать этот адрес для retreiving WSDL-данные https://profitweb.afasonline.nl/profitservices/updateconnector.asmx?wsdl

Когда я ввести этот адрес в браузере, имя пользователя и пароль запрашивается. Набрав мое имя пользователя и пароль, отображается WSLD XML.

Итак, я использую этот мир PHP кода

$wsdl = "https://profitweb.afasonline.nl/profitservices/updateconnector.asmx?wsdl"; 
$url = "https://profitweb.afasonline.nl/profitservices/updateconnector.asmx"; 
$login = 'username'; 
$password = 'password'; 

$client = new SoapClient($wsdl, array('login' => $login, 'password' => $password)); 

Но тогда я получаю следующее сообщение об ошибке:

Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://profitweb.afasonline.nl/profitservices/updateconnector.asmx?wsdl' : failed to load external entity "https://profitweb.afasonline.nl/profitservices/updateconnector.asmx?wsdl" in C:\xampp\htdocs\test.nl\soap.php:8 Stack trace: #0 C:\xampp\htdocs\test.nl\soap.php(8): SoapClient->SoapClient('https://profitw...', Array) #1 {main} thrown in C:\xampp\htdocs\test.nl\soap.php on line 8 

Это не выглядит как ошибка аутентификации. Однако, если я загружаю файл wsdl вручную, сохраните его локально, а затем используйте этот файл для создания new SoapClient, я не получаю никаких ошибок при инициализации SoapClient.

Но если я тогда сделать запрос

$client->__doRequest($request, $url, 'Execute', '1'); 

Я получаю эту __getLastResponseHeaders

HTTP/1.1 401 Unauthorized (The server requires authorization to fulfill the request. Access to the Web server is denied. Contact the server administrator.) WWW-Authenticate: Negotiate WWW-Authenticate: Kerberos WWW-Authenticate: NTLM Connection: Keep-Alive Pragma: no-cache Cache-Control: no-cache Content-Type: text/html Content-Length: 3184 

Так что это дает мне идею, что я бегу в проблемы аутентификации! Читайте много сообщений уже об этой проблеме, но не можете найти правильный реактивный самолет!

EDIT Добавление этого к опциям мне в самом деле ошибка аутентификации

'trace' => 1, 'exceptions' => 0 

ДАЙ в.

Warning: SoapClient::SoapClient(https://profitweb.afasonline.nl/profitservices/updateconnector.asmx?wsdl): failed to open stream: HTTP request failed! HTTP/1.1 401 Unauthorized (The server requires authorization to fulfill the request. Access to the Web server is denied. Cont in C:\xampp\htdocs\test.nl\soap.php on line 9 
+0

попробовать ссылку как HTTP вместо HTTPS – MDroid

+2

@MDroid, та же ошибка при использовании этой ссылке! – Timo002

+0

Получил идентичную проблему ... –

ответ

0

AFAS по-прежнему использует NuSOAP (4.x) вместо SOAP (5.x). Я использую набор noiselabs/nusoap, который можно найти в Github для доступа к AFAS.

0

В основном вы получаете такого рода ошибки при подключении с Afasonline Soap API в PHP

Ниже приведен пример того, как подключить и запрос

ПРИМЕЧАНИЕ: Прежде всего, необходимо знать некоторые понятия о Afasonline API, прежде чем соединение, как вы знаете, Afasonline использует Nusoap с аутентификацией Windows NTLM, поэтому для того, чтобы связать, вам нужно имя домена для NTLM, которое является «AOL» в случае Afasonline. Вы можете больше узнать о NTLM, выполнив поиск через Интернет. Далее вам понадобится следующий параметр для подключения environmentId (он всегда начинается с OXXXXXXX), userId, Password, connectorID.

Я собираюсь показать пример для Getconnector с connectorID (SSS_werkgever_vacatures), чтобы получить все задания, но метод аутентификации одинаковый для всех соединителей.

Click here to see Tutorial in Detail

<?php 
 
require_once('lib/nusoap.php'); 
 

 
$wsdl = 'https://profitweb.afasonline.nl/profitservices/getconnector.asmx?wsdl'; 
 

 
$client = new nusoap_client($wsdl, true); 
 
$client->setCredentials("AOL" . '\\' . "53175.Webbio", "Password!", 'ntlm'); 
 
$client->setUseCurl(true); 
 
$client->useHTTPPersistentConnection(); 
 
$client->setCurlOption(CURLOPT_USERPWD, '53175.webbio:Password!'); 
 

 

 
$xml_array['environmentId'] = 'O12343AA'; 
 
$xml_array['userId'] = "41258.Webbio"; 
 
$xml_array['password'] = "Password"; 
 
$xml_array['logonAs'] = ""; 
 
$xml_array['connectorId'] = "SSS_werkgever_vacatures"; 
 
$xml_array['filtersXml'] = ""; 
 

 

 
$err = $client->getError(); 
 
if ($err) { 
 
\t echo '<h2>Constructor error</h2><pre>' . $err . '</pre>'; 
 
\t echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->getDebug(), ENT_QUOTES) . '</pre>'; 
 
\t exit(); 
 
} 
 

 
$result = $client->call('GetData', array('parameters' => $xml_array), '', '', false, true); 
 
// var_dump($result); 
 

 
header('Content-Type: application/xml'); 
 
print_r($result["GetDataResult"]); 
 

 
?>

+0

Пожалуйста, измените пароль своей среды, поскольку он был открыт публично. – Caramiriel

Смежные вопросы