Я пытаюсь построить соединение между данными из CMS и CRM-системами на основе веб-сервисов и с использованием библиотеки NuSOAP. Но при попытке сформировать запрос на сервер CRM мой веб-сервер (http://poseidonexpeditions.ru/soap/) возвращает этот вид ошибкиОшибка wsdl: HTTP ERROR: сокет, считываемый терминатором chunk, был отключен
wsdl error: Getting http://79.172.60.168/poseidon/soap.php?wsdl - HTTP ERROR: socket read of chunk terminator timed out"
Тем не менее, если запрос посылается от другого сервера - все работает отлично. Если запрос отправляется на другой сервер WSDL - все в порядке:
http://poseidonexpeditions.ru/soap/client.php
файл выглядит следующим образом:
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
require($_SERVER["DOCUMENT_ROOT"]."/soap/lib/nusoap.php");
//$APPLICATION->IncludeComponent("pex:web.client");
require_once('./lib/nusoap.php');
$proxyhost = isset($_POST['proxyhost']) ? $_POST['proxyhost'] : '';
$proxyport = isset($_POST['proxyport']) ? $_POST['proxyport'] : '';
$proxyusername = isset($_POST['proxyusername']) ? $_POST['proxyusername'] : '';
$proxypassword = isset($_POST['proxypassword']) ? $_POST['proxypassword'] : '';
$client = new nusoap_client('http://79.172.60.168/poseidon/soap.php?wsdl', 'wsdl',
$proxyhost, $proxyport, $proxyusername, $proxypassword);
$err = $client->getError();
if ($err) {
echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
}
//$myWsdl = 'http://79.172.60.168/poseidon/soap.php?wsdl';
$myAuth = array(
'user_name' => 'foobar',
'password' => MD5('foobar'),
);
//$soapClient = new nusoap_client($myWsdl,true);
//var_dump($soapClient);
//
// Login
$loginParams = array('user_auth' => $myAuth);
$loginResult = $client->call('login', $loginParams);
$sessionId = $loginResult['id'];
$err = $client->getError();
echo $err;
echo '<h2>Отладка</h2>';
echo '<pre>' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '</pre>';
echo $sessionId;
$set_entry = $client->call('set_entry', Array(
'session'=>$sessionId,
'module_name'=>'PsdnProducts',
'name_value_list'=>array(
array("name" => 'ID',"value" => 1),
array("name" => 'name',"value" => 'Test')
)));
echo '<pre>';
var_dump($set_entry);
echo '</pre>';
?>
Возможно, это поможет? http://sourceforge.net/p/nusoap/discussion/193579/thread/92249804 - Мой совет: не используйте NuSOAP, он старый, он глючит, он мертв. –
Да, я читал это. Строка не UTF-8, это ISO :(Также у меня нет выбора, так как разработчики CRM задают именно эту библиотеку. – Dronich