2013-12-11 1 views
1

웹 서비스를 기반으로하고 NuSOAP 라이브러리를 사용하여 CMS의 데이터와 CRM 시스템 간의 연결을 구축하려고합니다. 요청이 다른 서버에서 전송되는 경우 그러나 CRM 서버 내 웹 서버 (http://poseidonexpeditions.ru/soap/)에 요청을 형성 할 때하는 것은,wsdl 오류 : HTTP 오류 : 청크 터미네이터의 소켓 읽기가 시간 초과되었습니다.

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>';    
?> 
+1

도움이 될만한 의견이 있으십니까? http://sourceforge.net/p/nusoap/discussion/193579/thread/92249804 - 조언 : NuSOAP을 사용하지 마십시오. 오래된 것입니다. 버그이며, 죽었습니다. –

+0

그래, 그걸 읽었 어. 문자열은 UTF-8이 아니기 때문에 ISO :(CRM 개발자가이 라이브러리를 정확히 요구하기 때문에 선택권이 없습니다. – Dronich

답변

1
난 그냥 추측하고

, 데이터를 전송하기 위해 사용하는 WSDL CRM에 sObject가 많이 있고 재귀 적으로 서로를 참조하게됩니다. 때로는 wsdl로 인해 제대로로드 할 수 없습니다. 따라서 데이터를 보내고 다른 sObject를 제거하는 데 사용되는 한 종류의 sObject를 사용해야합니다. 도움이 될지도 모른다.

감사합니다. ambuj

관련 문제