2011-06-24 21 views
6

Esta es mi primera publicación, así que perdónenme si no estoy muy claro. También precederé esto diciendo que realmente sé muy poco sobre php y servicios web.Solicitud SOAP con <stdClass> etiquetas

El problema que estoy teniendo es la siguiente:

una solicitud SOAP se genera por una fuente externa (un cliente) y se envía a mi servidor PHP SOAP. Cuando el servidor recibe la solicitud, no es correcta en absoluto. Un detector de paquetes revela que la solicitud parece correcta cuando llega a la máquina en la que se está ejecutando el servidor php. Pero, por alguna razón, tan pronto como el servidor de jabón recibe la solicitud, todo está en mal estado.

Lo que es realmente extraño es que hace solo una semana este código funcionó bien. No se han realizado cambios desde entonces. Esto ha sido probado en 3 máquinas diferentes, una de las cuales está ejecutando una versión diferente de php (¡y está en un estado diferente!). Una de las máquinas se apagó poco después de algunas pruebas exitosas, y luego se activó hoy después de que este problema surgió solo para fallar.

Aquí es una muestra de la solicitud enviada por el cliente:

<?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>123456789</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> 

que aquí hay una muestra de lo que recibe el servidor de jabón:

<?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> 

Este es el código para el servidor de jabón:

<?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(); 

?> 

Aquí es el 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> 

¿Alguien puede decirme por qué falta la respuesta en la sección CoverageRequest y por qué se envuelve repentinamente en las etiquetas stdClass?

Gracias!

+1

Es difícil de decir. Ese método (serialize() ni siquiera está documentado). Además, se pregunta por qué está cargando $ pInput en un $ resultado.Si el sobre de SOAP ya está formateado correctamente, ¿por qué no simplemente pasarlo al servicio web de 4D? – Bretticus

+1

Quizás, debe escribir un Servidor SOAP real: http://www.php.net/manual/en/soapserver.soapserver.php y luego tomar la entrada y escribir un cliente SOAP que esté seguro que cumple con el Servicio 4D. – Bretticus

+0

¿Está seguro de que la solicitud del cliente es enviada a wat? Podría intentar comprobar usando wireshark para estar seguro. Estoy de acuerdo con Bretticus en el uso de SoapServer. –

Respuesta

1

No puedo decir la respuesta, pero puedo explicarle a stdClass.

Un objeto del tipo stdClass es un contenedor simple. Se obtiene una clase de tipo stdClass cuando una conversión campo de batalla de una matriz a un objeto, como por ejemplo:

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

Si realizó una var_dump() de la presente, se obtendría:

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

Todos los objetos en todos los idiomas heredan de algún objeto base. Supongo que en PHP, es stdClass.

(votar por mí si te gusta la respuesta.)

Dustin

0

La sección CoverageRequest no es parte de la clase CoverageResponse. La clase CoverageResponse contiene una única instancia de RequestorInformationModule y una matriz abierta de objetos CoverageResponseDetail.

Mi mejor estimación de por qué stdClass está apareciendo se debe al uso de complexTypes sin nombre en los elementos CoverageRequest y CoverageResponse.

Cuestiones relacionadas