为什么PHP SoapClient/Webservice没有给出响应?

为什么PHP SoapClient/Webservice没有给出响应?,php,web-services,soap,wsdl,soap-client,Php,Web Services,Soap,Wsdl,Soap Client,我有一个通过SOAP使用Web服务的脚本。我想知道为什么我没有收到来自服务器/端点URL的响应。另一方说他们收到了我的请求,这意味着脚本可以正常工作。唯一的问题是它没有给我回复。我还试图获取最后一个请求、最后一个请求头和最后一个响应,但什么也没发生 你知道为什么会这样吗 这是我的密码: $wsdl = "http://imupost.co.za/momentum/CRMLeadService.wsdl"; $momurl = "https://integrationdev.momentum.co

我有一个通过SOAP使用Web服务的脚本。我想知道为什么我没有收到来自服务器/端点URL的响应。另一方说他们收到了我的请求,这意味着脚本可以正常工作。唯一的问题是它没有给我回复。我还试图获取最后一个请求、最后一个请求头和最后一个响应,但什么也没发生

你知道为什么会这样吗

这是我的密码:

$wsdl = "http://imupost.co.za/momentum/CRMLeadService.wsdl";
$momurl = "https://integrationdev.momentum.co.za/sales/CRMService/CRMLeadService_v1_0";
echo("Post to URL: {$momurl}\n");
$username = "817221";
$password = "1234";

echo("<pre>");
$client = new SoapClient ($wsdl, array('location' => $momurl, 'style' => SOAP_DOCUMENT, 'trace' => 1,  'soap_version' => SOAP_1_1, 'exceptions' => true, 'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP, 'ssl_method' => SOAP_SSL_METHOD_TLS));

$header='
    <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <wsse:UsernameToken wsu:Id="UsernameToken-45">
            <wsse:Username>'.$username.'</wsse:Username>
            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">'.$password.'</wsse:Password>
        </wsse:UsernameToken>
    </wsse:Security>
    ';

$headerSoapVar = new SoapVar($header,XSD_ANYXML); 
$soapheader = new SoapHeader('wsse', "Security" , $headerSoapVar , true);
$client->__setSoapHeaders($soapheader);

$params['createLead'] = array(
    'LeadSourceId' => '07d3d6fe-7682-e311-a16d-005056b81ea8',
    'AffiliateLeadReference' => '852800020',
    'Title' => array('Code' => '852800018'),
    'Initials' => 'MH',
    'PreferredName' => 'Jane',
    'FirstName' => 'Hudson',
    'LastName' => 'Craig',
    'PreferredCorrespondenceLanguage' => array('Code' => '852800001'),
    'PreferredCommunicationMethod' => array('Code' =>'852800000'),
    'HomePhoneNumber' => '0725222427',
    'BusinessPhoneNumber' => '0725584155',
    'MobilePhoneNumber' => '0723694259',
    'EmailAddress' => 'jhudson@gmail.com',
    'Notes' => 'IMU',
    'ProductCategories' => array('Code' => '9c7d3878-5295-e211-9330-005056b81ea8', 'Description' => 'Health - Personal')
); 

    $result = $client->__soapCall("createLead", array($params));
    echo "REQUEST:\n" . htmlentities($client->__getLastRequest())  . "\n";
    echo "RESPONSE:\n" . $client->__getLastResponse()  . "\n";
    print_r($client->__getLastRequestHeaders());
$wsdl=”http://imupost.co.za/momentum/CRMLeadService.wsdl";
$momurl=”https://integrationdev.momentum.co.za/sales/CRMService/CRMLeadService_v1_0";
echo(“发布到URL:{$momurl}\n”);
$username=“817221”;
$password=“1234”;
回声(“”);
$client=new SoapClient($wsdl,array('location'=>$momurl,'style'=>SOAP\u DOCUMENT,'trace'=>1,'SOAP\u version'=>SOAP\u 1\u 1,'exceptions'=>true,'compression'=>SOAP\u compression\u ACCEPT | SOAP\u compression\u GZIP,'ssl\u method=>SOAP\u ssl\u TLS));
$header=
“.$username。”
“.$password。”
';
$headerSoapVar=newsoapvar($header,XSD_ANYXML);
$soapheader=新的soapheader('wsse','Security',$headerSoapVar,true);
$client->_setSoapHeaders($soapheader);
$params['createLead']=数组(
“LeadSourceId”=>“07d3d6fe-7682-e311-a16d-005056b81ea8”,
“附件电话地址”=>“852800020”,
'Title'=>array('Code'=>'852800018'),
'首字母'=>'MH',
'首选名称'=>'简',
'FirstName'=>'Hudson',
“LastName”=>“Craig”,
'PreferredRespondenceLanguage'=>数组('Code'=>'852800001'),
'PreferredCommunicationMethod'=>数组('Code'=>'852800000'),
“家庭电话号码”=>“0725222427”,
'BusinessPhoneNumber'=>'0725584155',
'MobilePhoneNumber'=>'0723694259',
'电子邮件地址'=>'jhudson@gmail.com',
“注释”=>“IMU”,
'ProductCategories'=>array('Code'=>'9c7d3878-5295-e211-9330-005056b81ea8','Description'=>'Health-Personal')
); 
$result=$client->_soapCall(“createLead”,数组($params));
回显“请求:\n”。htmlentities($client->\uu getLastRequest()。“\n”;
回显“响应:\n”$客户端->\uu getLastResponse()。“\n”;
打印($client->u getLastRequestHeaders());

我建议使用try-catch

试试看{
$client->_soapCall(“createLead”,数组($params));
echo$client->uu getLastResponse();
}捕获(例外$e){
echo“异常:”.print\r($e,true)。“\n”;
}

很抱歉,这不是正确答案。我删除了它。您可以粘贴服务器正在接收的请求消息吗?我看过你的wsdl,里面有很多不同的名称空间。我不知道这个代码是否按照服务器的要求形成您的请求。这也是一个问题。正如您在我的代码中看到的,我试图打印出请求,但没有显示任何内容。即使请求标题也无法显示。但是对方告诉我他们已经收到了请求。这有点奇怪。@kingAm好的,请求应该是这样的:我已经通过使用soap ui soap请求对您的soap请求进行比较,检查了您的soap请求。太完美了。唯一的问题是收到你的回复。echo$结果显示了什么?是的,我也在用SOAPUI测试它,它工作得很好。echo$结果没有显示任何内容。
try {
  $client->__soapCall("createLead", array($params));
  echo $client->__getLastResponse();
} catch (Exception $e) {
  echo "<pre>Exception: ".print_r($e, true)."</pre>\n";
}