Веб-сервис с .net и nusoap - PullRequest
       7

Веб-сервис с .net и nusoap

3 голосов
/ 17 февраля 2011

Я использую nusoap для подключения к службе .net, но я получаю сообщение об ошибке "Примечание: неопределенная переменная: HEADER в C: \ xampplite \ htdocs \ newsoap \ searchwwcc.php в строке 54

Неустранимая ошибка:Uncaught Исключение SoapFault: функция [Client] ("serializeEnvelope") не является допустимым методом для этой службы в C: \ xampplite \ htdocs \ newsoap \ searchwwcc.php: 54 Трассировка стека: # 0 [внутренняя функция]: вызов SoapClient -> __('serializeEnvelo ...', Array) # 1 C: \ xampplite \ htdocs \ newsoap \ searchwwcc.php (54): SoapClient-> serializeEnvelope ('

Вот код ссылки, который я использую


require_once('lib/nusoap.php');


$serverpath ='https://service.website.net/ws/bridge.asmx?wsdl';

$SOAPClient =  new soapclient($serverpath);


$SOAPACTION  = "http://connect2.askadmissions.net/webservices/GetContact";
$BODY='<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetContact xmlns="http://service.website.net/webservices/">
        <ClientName>clientname</ClientName>
        <PassKey>*******</PassKey>
        <SearchCriteriaXml>
            <![CDATA[
                <attributes>
                    <attribute>
                        <name>email</name>
                        <value>name@name.com</value>
                        <operator>equals</operator>
                    </attribute>
                </attributes>
            ]]>
        </SearchCriteriaXml>
        <AttributesXml>
            <![CDATA[
                <attributes>
                    <attribute>
                        <name>firstname</name>
                    </attribute>
                    <attribute>
                        <name>lastname</name>
                    </attribute>
                </attributes>
            ]]>
        </AttributesXml>
    </GetContact>
  </soap:Body>
</soap:Envelope>';


 $SOAPMESSAGE =  $SOAPClient->serializeEnvelope($BODY,$HEADER,array(),'document', 'literal');
 $RESULT = $SOAPClient->send($BODY, $SOAPACTION);


echo  $SOAPClient->response;

1 Ответ

4 голосов
/ 18 февраля 2011

Я узнал, что случилось:

я меняю строку:

$SOAPClient =  new soapclient($serverpath);

до

$SOAPClient =  new nusoap_client($serverpath);

Какую исправленную ошибку я получил, и она стала давать мне пустую страницу. Я обнаружил, что пустая страница была из-за того, что curl не был установлен.

Использовал следующий код для отображения ошибки:

$soapError = $SOAPClient->getError();
if (! empty($soapError)) {
    $errorMessage = 'SOAPClient failed: ' . $soapError;
    throw new Exception($errorMessage);
}

После того, как все заработало, я получил предупреждение:

Notice: Undefined property: nusoap_client::$operation in C:\xampplite\htdocs\newsoap\lib\nusoap.php on line 7674

Я пошел в nusoap.php и перед этой строкой вставил:

if(empty($this->operation)) {
   $this->operation = "";
}
...