Запрос SOAP с тегами <stdClass> - PullRequest
6 голосов
/ 25 июня 2011

Это мой первый пост, так что извините, если я не очень ясно.Я также предвосхищу это, сказав, что я действительно очень мало знаю о php и веб-сервисах.

Проблема, с которой я столкнулся, заключается в следующем:

Запрос SOAP генерируется внешним источником (клиент), а затем отправляется на мой php SOAP-сервер.Когда сервер получает запрос, он совсем не корректен.Анализатор пакетов показывает, что запрос выглядит правильно, когда он достигает компьютера, на котором работает php-сервер.Но по какой-то причине, как только мыльный сервер получает запрос, он все испортил.

Что действительно странно, так это то, что всего неделю назад этот код работал нормально.С тех пор никаких изменений не было.Это было опробовано на 3 разных машинах, на одной из которых установлена ​​другая версия php (и она находится в другом состоянии!).Одна из машин была выключена вскоре после некоторого успешного тестирования, а затем включена сегодня, когда эта проблема возникла только для сбоя.

Вот пример запроса, отправленного клиентом:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <CoverageRequest xmlns="http://www.iicmva.com/CoverageVerification/">
            <RequestorInformation>
                <Organization>
                    <Name>NVDMV</Name>
                </Organization>
                <ReasonDetails>
                    <ReasonCode>BI</ReasonCode>
                    <TrackingNumber>NVDMV-2011-05-12 10:36:52:286678</TrackingNumber>
                </ReasonDetails>
            </RequestorInformation>
            <Detail>
                <PolicyInformation>
                    <OrganizationDetails>
                        <NAIC>26654</NAIC>
                    </OrganizationDetails>
                    <PolicyDetails>
                        <VerificationDate>2011-05 12T00:00:00</VerificationDate>
                        <UniqueKey>1234567890123456789</UniqueKey>
                        <PolicyState>NV</PolicyState>
                    </PolicyDetails>
                </PolicyInformation>
                <InsuredInformation>
                    <PrimaryNameInformation>
                        <ParsedName>
                            <GivenName>FIRSTNAME</GivenName>
                            <Surname>LASTNAME</Surname>
                        </ParsedName>
                        <Name>LASTNAME,FIRSTNAME</Name>
                        <DriversLicense>NOLICENSE</DriversLicense>
                        <FEIN>FEIN</FEIN>
                    </PrimaryNameInformation>
                    <Address>
                        <StreetAddress>12345</StreetAddress>
                    </Address>
                </InsuredInformation>
                <VehicleInformation>
                    <VehicleDetails>
                        <VIN>VIN1234567</VIN>
                        <Make>MAKE</Make>
                        <Model>MODEL</Model>
                        <Year>2000</Year>
                    </VehicleDetails>
                </VehicleInformation>
            </Detail>
        </CoverageRequest>
    </soap:Body>
</soap:Envelope>

Вот пример того, что получает мыльный сервер:

<?xml version="1.0" encoding="UTF-8"?><CoverageRequest><stdClass>
    <Individual>
        <ParsedName>
            <Prefix />
            <GivenName />
            <MiddleName />
            <Surname />
            <Suffix />
        </ParsedName>
    </Individual>
    <Organization>
        <Name />
    </Organization>
    <ReasonDetails>
        <ReasonCode />
        <TrackingNumber />
    </ReasonDetails>
</stdClass></CoverageRequest>

Вот код для мыльного сервера:

<?php
    function CoverageRequest($pInput) {
    error_reporting(~E_ALL);

    require_once 'XML/Serializer.php';

    $options = array(
            XML_SERIALIZER_OPTION_INDENT      => '    ',
            XML_SERIALIZER_OPTION_LINEBREAKS  => "\n",
            XML_SERIALIZER_OPTION_DEFAULT_TAG => 'unnamedItem',
            XML_SERIALIZER_OPTION_TYPEHINTS   => false
    );

    $serializer = &new XML_Serializer($options);

    $result = $serializer->serialize($pInput);

    if( $result === true ) {
        $xml = $serializer->getSerializedData();
    }



    // Surround all of the XML in a single tag
    $xml = '<CoverageRequest>' . $xml;
    $xml = $xml . '</CoverageRequest>';



    // Insert the xml header at the beginning
    $xml = '<?xml version="1.0" encoding="UTF-8"?>' . $xml;

    $fp = fopen('SOAPRequest.txt', 'w');
        fwrite($fp, $xml);
        fclose($fp);

    // Send the data to 4D's web service to be processed

        $client = new SoapClient('http://67.214.247.59:8090/4DWSDL/');
        $response = $client->VerifyInsurance($xml);

        $fp = fopen('SOAPResponse.txt', 'w');
        fwrite($fp, $response);
        fclose($fp);

    $xmlvar = new SoapVar($response, XSD_ANYXML);
    return $xmlvar;

    }

    // Clean up the response to match the guidelines
    function callback($buffer) {
    $buffer = str_replace('<ns1:CoverageRequestResponse>', '', $buffer);
    $buffer = str_replace('</ns1:CoverageRequestResponse>', '', $buffer);

    $buffer = str_replace('SOAP-ENV', 'soap', $buffer);

    return $buffer;
    }

    // turn off the wsdl cache
    ini_set('soap.wsdl_cache_enabled', '0');

    $server = new SoapServer(null, array('uri' => 'http://67.214.247.59/phpserver/verifyinsurance.wsdl'));

    $server->addFunction('CoverageRequest');

    ob_start('callback');

    $server->handle();
    ob_end_flush();

?>

Вот wsdl:

<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://www.iicmva.com/CoverageVerification/"
targetNamespace="http://www.iicmva.com/CoverageVerification/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>

  <wsdl:types>
    <s:schema elementFormDefault="qualified" targetNamespace="http://www.iicmva.com/CoverageVerification/">
      <s:element name="CoverageRequest">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="RequestorInformation" type="tns:RequestorInformationModule" />
            <s:element minOccurs="0" maxOccurs="1" name="Detail" type="tns:CoverageRequestDetail" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:complexType name="RequestorInformationModule">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="Individual" type="tns:IndividualBlock2" />
          <s:element minOccurs="0" maxOccurs="1" name="Organization" type="tns:OrganizationBlock3" />
          <s:element minOccurs="0" maxOccurs="1" name="ReasonDetails" type="tns:DocumentDetailBlock2" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="IndividualBlock2">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="ParsedName" type="tns:IndividualNameComponent2" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="IndividualNameComponent2">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="Prefix" type="tns:NameText2" />
          <s:element minOccurs="0" maxOccurs="1" name="GivenName" type="tns:NameText4" />
          <s:element minOccurs="0" maxOccurs="1" name="MiddleName" type="tns:NameText5" />
          <s:element minOccurs="0" maxOccurs="unbounded" name="Surname" type="tns:NameText6" />
          <s:element minOccurs="0" maxOccurs="1" name="Suffix" type="tns:NameText2" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="NameText2">
        <s:simpleContent>
          <s:extension base="s:string" />
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="NameText4">
        <s:simpleContent>
          <s:extension base="s:string" />
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="NameText5">
        <s:simpleContent>
          <s:extension base="s:string" />
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="NameText6">
        <s:simpleContent>
          <s:extension base="s:string" />
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="OrganizationBlock3">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="Name" type="tns:NameText1" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="NameText1">
        <s:simpleContent>
          <s:extension base="s:string" />
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="DocumentDetailBlock2">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="ReasonCode" type="tns:ReasonCode1" />
          <s:element minOccurs="0" maxOccurs="1" name="TrackingNumber" type="tns:ResourceIdentifier12" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="ReasonCode1">
        <s:simpleContent>
          <s:extension base="s:token">
            <s:attribute name="ListAgencyIdentifier" type="s:string" />
            <s:attribute name="ListAgencyNameText" type="s:string" />
            <s:attribute name="ListNameText" type="s:string" />
            <s:attribute name="ListIdentifier" type="s:string" />
            <s:attribute name="ListSchemeURI" type="s:string" />
            <s:attribute name="ListURI" type="s:string" />
            <s:attribute name="ListVersionIdentifier" type="s:string" />
            <s:attribute name="NameText" type="s:string" />
          </s:extension>
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="ResourceIdentifier12">
        <s:simpleContent>
          <s:extension base="s:token">
            <s:attribute name="IdSchemeAgencyIdentifier" type="s:string" />
            <s:attribute name="IdSchemeAgencyNameText" type="s:string" />
            <s:attribute name="IdSchemeIdentifier" type="s:string" />
            <s:attribute name="IdSchemeNameText" type="s:string" />
            <s:attribute name="IdSchemeURI" type="s:string" />
            <s:attribute name="IdSchemeVersionIdentifier" type="s:string" />
          </s:extension>
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="CoverageRequestDetail">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="PolicyInformation" type="tns:CoveragePolicyRequestModule" />
          <s:element minOccurs="0" maxOccurs="1" name="InsuredInformation" type="tns:InsuredModule" />
          <s:element minOccurs="0" maxOccurs="1" name="VehicleInformation" type="tns:RiskInformationModule" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="CoveragePolicyRequestModule">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="OrganizationDetails" type="tns:OrganizationBlock4" />
          <s:element minOccurs="0" maxOccurs="1" name="PolicyDetails" type="tns:DocumentDetailBlock3" />
          <s:element minOccurs="0" maxOccurs="1" name="BodilyInjuryCoverage" type="tns:AmountBlock1" />
          <s:element minOccurs="0" maxOccurs="1" name="PropertyDamageCoverage" type="tns:AmountBlock1" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="OrganizationBlock4">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="NAIC" type="tns:PartyIdentifier18" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="PartyIdentifier18">
        <s:simpleContent>
          <s:extension base="s:token">
            <s:attribute name="IdSchemeAgencyIdentifier" type="s:string" />
            <s:attribute name="IdSchemeAgencyNameText" type="s:string" />
            <s:attribute name="IdSchemeIdentifier" type="s:string" />
            <s:attribute name="IdSchemeNameText" type="s:string" />
            <s:attribute name="IdSchemeURI" type="s:string" />
            <s:attribute name="IdSchemeVersionIdentifier" type="s:string" />
          </s:extension>
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="DocumentDetailBlock3">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="VerificationDate" type="tns:DateTime1" />
          <s:element minOccurs="0" maxOccurs="1" name="UniqueKey" type="tns:ResourceIdentifier12" />
          <s:element minOccurs="0" maxOccurs="1" name="PolicyState" type="tns:ResourceIdentifier14" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="DateTime1">
        <s:simpleContent>
          <s:extension base="s:dateTime">
            <s:attribute name="FormatText" type="s:string" />
          </s:extension>
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="ResourceIdentifier14">
        <s:simpleContent>
          <s:extension base="s:token">
            <s:attribute name="IdSchemeAgencyIdentifier" type="s:string" />
            <s:attribute name="IdSchemeAgencyNameText" type="s:string" />
            <s:attribute name="IdSchemeIdentifier" type="s:string" />
            <s:attribute name="IdSchemeNameText" type="s:string" />
            <s:attribute name="IdSchemeURI" type="s:string" />
            <s:attribute name="IdSchemeVersionIdentifier" type="s:string" />
          </s:extension>
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="AmountBlock1">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="TypeofLimit" type="tns:ResourceCode9" />
          <s:element minOccurs="0" maxOccurs="1" name="CoverageAmount" type="tns:Amount1" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="ResourceCode9">
        <s:simpleContent>
          <s:extension base="s:token">
            <s:attribute name="ListAgencyIdentifier" type="s:string" />
            <s:attribute name="ListAgencyNameText" type="s:string" />
            <s:attribute name="ListNameText" type="s:string" />
            <s:attribute name="ListIdentifier" type="s:string" />
            <s:attribute name="ListSchemeURI" type="s:string" />
            <s:attribute name="ListURI" type="s:string" />
            <s:attribute name="ListVersionIdentifier" type="s:string" />
            <s:attribute name="NameText" type="s:string" />
          </s:extension>
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="Amount1">
        <s:simpleContent>
          <s:extension base="s:decimal">
            <s:attribute name="currencyidentifier" type="s:string" />
            <s:attribute name="CurrencyCodeListVersionIdentifier" type="s:string" />
            <s:attribute name="CurrencyCodeList" type="s:string" />
          </s:extension>
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="InsuredModule">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="PrimaryNameInformation" type="tns:IndividualBlock3" />
          <s:element minOccurs="0" maxOccurs="unbounded" name="AdditionalNamesInformation" type="tns:IndividualBlock3" />
          <s:element minOccurs="0" maxOccurs="1" name="Address" type="tns:AddresslBlock1" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="IndividualBlock3">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="ParsedName" type="tns:IndividualNameComponent2" />
          <s:element minOccurs="0" maxOccurs="1" name="Name" type="tns:NameText1" />
          <s:element minOccurs="0" maxOccurs="1" name="SocialSecurityNumber" type="tns:PartyIdentifier9" />
          <s:element minOccurs="0" maxOccurs="1" name="DriversLicense" type="tns:PartyIdentifier8" />
          <s:element minOccurs="0" maxOccurs="1" name="FEIN" type="tns:PartyIdentifier8" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="PartyIdentifier9">
        <s:simpleContent>
          <s:extension base="s:token">
            <s:attribute name="IdSchemeAgencyIdentifier" type="s:string" />
            <s:attribute name="IdSchemeAgencyNameText" type="s:string" />
            <s:attribute name="IdSchemeIdentifier" type="s:string" />
            <s:attribute name="IdSchemeNameText" type="s:string" />
            <s:attribute name="IdSchemeURI" type="s:string" />
            <s:attribute name="IdSchemeVersionIdentifier" type="s:string" />
          </s:extension>
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="PartyIdentifier8">
        <s:simpleContent>
          <s:extension base="s:token">
            <s:attribute name="IdSchemeAgencyIdentifier" type="s:string" />
            <s:attribute name="IdSchemeAgencyNameText" type="s:string" />
            <s:attribute name="IdSchemeIdentifier" type="s:string" />
            <s:attribute name="IdSchemeNameText" type="s:string" />
            <s:attribute name="IdSchemeURI" type="s:string" />
            <s:attribute name="IdSchemeVersionIdentifier" type="s:string" />
          </s:extension>
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="AddresslBlock1">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="StreetAddress" type="tns:LocationText9" />
          <s:element minOccurs="0" maxOccurs="1" name="SubsiteAddress" type="tns:SubsiteAddressComponent1" />
          <s:element minOccurs="0" maxOccurs="1" name="City" type="tns:LocationText1" />
          <s:element minOccurs="0" maxOccurs="1" name="CountrySubdivision" type="tns:LocationCode2" />
          <s:element minOccurs="0" maxOccurs="1" name="PostalCode" type="tns:LocationIdentifier1" />
          <s:element minOccurs="0" maxOccurs="1" name="Country" type="tns:LocationCode3" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="LocationText9">
        <s:simpleContent>
          <s:extension base="s:string" />
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="SubsiteAddressComponent1">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="Apartment" type="tns:LocationText2" />
          <s:element minOccurs="0" maxOccurs="1" name="Building" type="tns:LocationText7" />
          <s:element minOccurs="0" maxOccurs="1" name="Department" type="tns:LocationText7" />
          <s:element minOccurs="0" maxOccurs="1" name="Floor" type="tns:LocationText2" />
          <s:element minOccurs="0" maxOccurs="1" name="Room" type="tns:LocationText2" />
          <s:element minOccurs="0" maxOccurs="1" name="Suite" type="tns:LocationText2" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="LocationText2">
        <s:simpleContent>
          <s:extension base="s:string" />
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="LocationText7">
        <s:simpleContent>
          <s:extension base="s:string" />
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="LocationText1">
        <s:simpleContent>
          <s:extension base="s:string" />
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="LocationCode2">
        <s:simpleContent>
          <s:extension base="s:token">
            <s:attribute name="ListAgencyIdentifier" type="s:string" />
            <s:attribute name="ListAgencyNameText" type="s:string" />
            <s:attribute name="ListNameText" type="s:string" />
            <s:attribute name="ListIdentifier" type="s:string" />
            <s:attribute name="ListSchemeURI" type="s:string" />
            <s:attribute name="ListURI" type="s:string" />
            <s:attribute name="ListVersionIdentifier" type="s:string" />
            <s:attribute name="NameText" type="s:string" />
          </s:extension>
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="LocationIdentifier1">
        <s:simpleContent>
          <s:extension base="s:token">
            <s:attribute name="IdSchemeAgencyIdentifier" type="s:string" />
            <s:attribute name="IdSchemeAgencyNameText" type="s:string" />
            <s:attribute name="IdSchemeIdentifier" type="s:string" />
            <s:attribute name="IdSchemeNameText" type="s:string" />
            <s:attribute name="IdSchemeURI" type="s:string" />
            <s:attribute name="IdSchemeVersionIdentifier" type="s:string" />
          </s:extension>
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="LocationCode3">
        <s:simpleContent>
          <s:extension base="s:token">
            <s:attribute name="ListAgencyIdentifier" type="s:string" />
            <s:attribute name="ListAgencyNameText" type="s:string" />
            <s:attribute name="ListNameText" type="s:string" />
            <s:attribute name="ListIdentifier" type="s:string" />
            <s:attribute name="ListSchemeURI" type="s:string" />
            <s:attribute name="ListURI" type="s:string" />
            <s:attribute name="ListVersionIdentifier" type="s:string" />
            <s:attribute name="NameText" type="s:string" />
          </s:extension>
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="RiskInformationModule">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="VehicleDetails" type="tns:ResourceIdentificationBlock1" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="ResourceIdentificationBlock1">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="VIN" type="tns:ResourceIdentifier11" />
          <s:element minOccurs="0" maxOccurs="1" name="Make" type="tns:ResourceIdentifier12" />
          <s:element minOccurs="0" maxOccurs="1" name="Model" type="tns:ResourceIdentifier12" />
          <s:element minOccurs="0" maxOccurs="1" name="Year" type="tns:DateTimeText2" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="ResourceIdentifier11">
        <s:simpleContent>
          <s:extension base="s:token">
            <s:attribute name="IdSchemeAgencyIdentifier" type="s:string" />
            <s:attribute name="IdSchemeAgencyNameText" type="s:string" />
            <s:attribute name="IdSchemeIdentifier" type="s:string" />
            <s:attribute name="IdSchemeNameText" type="s:string" />
            <s:attribute name="IdSchemeURI" type="s:string" />
            <s:attribute name="IdSchemeVersionIdentifier" type="s:string" />
          </s:extension>
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="DateTimeText2">
        <s:simpleContent>
          <s:extension base="s:string" />
        </s:simpleContent>
      </s:complexType>
      <s:element name="CoverageResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="unbounded" name="Detail" type="tns:CoverageResponseDetail" />
            <s:element minOccurs="0" maxOccurs="1" name="RequestorInformation" type="tns:RequestorInformationModule" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:complexType name="CoverageResponseDetail">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="PolicyInformation" type="tns:CoveragePolicyResponseModule" />
          <s:element minOccurs="0" maxOccurs="1" name="InsuredInformation" type="tns:InsuredModule" />
          <s:element minOccurs="0" maxOccurs="1" name="VehicleInformation" type="tns:RiskInformationModule" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="CoveragePolicyResponseModule">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="CoverageStatus" type="tns:StatusInformationBlock4" />
          <s:element minOccurs="0" maxOccurs="1" name="OrganizationDetails" type="tns:OrganizationBlock4" />
          <s:element minOccurs="0" maxOccurs="1" name="PolicyDetails" type="tns:DocumentDetailBlock3" />
          <s:element minOccurs="0" maxOccurs="1" name="BodilyInjuryCoverage" type="tns:AmountBlock1" />
          <s:element minOccurs="0" maxOccurs="1" name="PropertyDamageCoverage" type="tns:AmountBlock1" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="StatusInformationBlock4">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="ResponseDetails" type="tns:ParsedStatusComponent3" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="ParsedStatusComponent3">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="ResponseCode" type="tns:EventCode7" />
          <s:element minOccurs="0" maxOccurs="unbounded" name="UnconfirmedReasonCode" type="tns:EventCode8" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="EventCode7">
        <s:simpleContent>
          <s:extension base="s:token">
            <s:attribute name="ListAgencyIdentifier" type="s:string" />
            <s:attribute name="ListAgencyNameText" type="s:string" />
            <s:attribute name="ListNameText" type="s:string" />
            <s:attribute name="ListIdentifier" type="s:string" />
            <s:attribute name="ListSchemeURI" type="s:string" />
            <s:attribute name="ListURI" type="s:string" />
            <s:attribute name="ListVersionIdentifier" type="s:string" />
            <s:attribute name="NameText" type="s:string" />
          </s:extension>
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="EventCode8">
        <s:simpleContent>
          <s:extension base="s:token">
            <s:attribute name="ListAgencyIdentifier" type="s:string" />
            <s:attribute name="ListAgencyNameText" type="s:string" />
            <s:attribute name="ListNameText" type="s:string" />
            <s:attribute name="ListIdentifier" type="s:string" />
            <s:attribute name="ListSchemeURI" type="s:string" />
            <s:attribute name="ListURI" type="s:string" />
            <s:attribute name="ListVersionIdentifier" type="s:string" />
            <s:attribute name="NameText" type="s:string" />
          </s:extension>
        </s:simpleContent>
      </s:complexType>
    </s:schema>
  </wsdl:types>

  <wsdl:message name="VerifyInsuranceSoapIn">
    <wsdl:part name="parameters" element="tns:CoverageRequest" />
  </wsdl:message>
  <wsdl:message name="VerifyInsuranceSoapOut">
    <wsdl:part name="parameters" element="tns:CoverageResponse" />
  </wsdl:message>
  <wsdl:portType name="VerifyServiceSoap">
    <wsdl:operation name="CoverageRequest">
      <wsdl:input message="tns:VerifyInsuranceSoapIn" />
      <wsdl:output message="tns:VerifyInsuranceSoapOut" />
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="VerifyServiceSoap" type="tns:VerifyServiceSoap">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
    <wsdl:operation name="CoverageRequest">
      <soap:operation soapAction="urn:gnwSoap#CoverageRequest" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="gnwSoap">
    <documentation xmlns="http://schemas.xmlsoap.org/wsdl/" />
    <wsdl:port name="VerifyServiceSoap" binding="tns:VerifyServiceSoap">
      <soap:address location="http://67.214.247.59/phpserver/server.php" />
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>

Может кто-нибудь сказать мне, почему в ответе отсутствует раздел CoverageRequest и почему он внезапно обернут в теги stdClass?

Спасибо!

Ответы [ 2 ]

1 голос
/ 09 сентября 2011

Я не могу сказать вам ответ, но я могу объяснить stdClass.

Объект типа stdClass представляет собой простую оболочку. Вы получаете класс типа stdClass при преобразовании массива в объект на поле битвы, например:

(object)array('keyname' => 'value')

Если бы вы сделали var_dump () этого, вы получите:

object(stdClass)#1 (1) {
  ["keyname"]=>
  string(5) "value"
}

Все объекты на каждом языке наследуются от некоторого базового объекта. Я предполагаю, что в PHP это stdClass.

(Проголосуйте, если вам нравится ответ.)

Дастин

0 голосов
/ 07 декабря 2011

Раздел CoverageRequest не является частью класса CoverageResponse. Класс CoverageResponse содержит один экземпляр RequestorInformationModule и открытый массив объектов CoverageResponseDetail.

Мое лучшее предположение о том, почему появляется stdClass, связано с использованием неназванных complexTypes в элементах CoverageRequest и CoverageResponse.

...