2013-04-15 9 views
0

Я использую драгоценный камень Савона для связи с мылом api от налоговой компании под названием vertex. Оконечные точки api можно найти здесь https://sandbox.ondemand.vertexinc.com/vertex-ws/listVertexServices.jsp.Проблема Отправка запросов SOAP с драгоценным камнем Savon в рубине

Мне пришлось переключить адаптер HTTP, чтобы использовать curb из-за некоторых проблем с SSL. Ниже приведен код для запроса я пытаюсь сделать:

class Tax 
    HTTPI.adapter = :curb 

    def self.lookup_tax_areas 
    client = Savon.client(wsdl: "https://sandbox.ondemand.vertexinc.com:443/vertex-ws/services/LookupTaxAreas60?wsdl") 
    response = client.call(:lookup_tax_areas60, xml: LOOKUPTAX) 
    end 

end 

Я получаю следующее сообщение об ошибке:

Tax.lookup_tax_areas 

    HTTPI GET request to sandbox.ondemand.vertexinc.com (curb) 
    SOAP request: https://sandbox.ondemand.vertexinc.com/vertex-ws/services/LookupTaxAreas60 
    SOAPAction: "LookupTaxAreas60", Content-Type: text/xml;charset=UTF-8, Content-Length: 676 
<?xml version='1.0' encoding='UTF-8'?> 
<!-- Sample Request for the Tax Areas Lookup Web Service --> 
    <VertexEnvelope xmlns='urn:vertexinc:o-series:tps:6:0' 
    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'> 
<Login> 
    <UserName>name</UserName> 
    <Password>password</Password> 
</Login> 
<TaxAreaRequest> 
<TaxAreaLookup asOfDate='2008-01-01'> 
    <PostalAddress> 
    <City>HUNTSVILLE</City> 
    <MainDivision>AL</MainDivision> 
    <SubDivision>MADISON</SubDivision> 
    <PostalCode>35801</PostalCode> 
    <Country>USA</Country> 
    </PostalAddress> 
</TaxAreaLookup> 
</TaxAreaRequest> 
</VertexEnvelope> 

HTTPI POST request to sandbox.ondemand.vertexinc.com (curb) 
SOAP response (status 500) 
<?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 

<S:Body><S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope"> 
<faultcode>S:Client</faultcode> <faultstring>Couldn't create SOAP message due to 
exception: unexpected XML tag. expected: 
{http://schemas.xmlsoap.org/soap/envelope/}Envelope but found: {urn:vertexinc:o- 
series:tps:6:0}VertexEnvelope</faultstring></S:Fault></S:Body></S:Envelope> 
Savon::SOAPFault: (S:Client) Couldn't create SOAP message due to exception: unexpected 
XML tag. expected: {http://schemas.xmlsoap.org/soap/envelope/}Envelope but found: 
{urn:vertexinc:o-series:tps:6:0}VertexEnvelope 
from /lib/savon/response.rb:70:in `raise_soap_and_http_errors!' 
from /lib/savon/response.rb:13:in `initialize' 
from /lib/savon/operation.rb:53:in `new' 
from /lib/savon/operation.rb:53:in `call' 
from /lib/savon/client.rb:36:in `call' 
from /app/models/tax.rb:7:in `lookup_tax_areas' 

С SOAP UI сообщение запроса я получаю довольно долго, но здесь версия урезывание:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:vertexinc:o-series:tps:6:0"> 
<soapenv:Header/> 
<soapenv:Body> 
    <urn:VertexEnvelope> 
    <urn:Login> 
     <!--Optional:--> 
     <urn:UserName>test</urn:UserName> 
     <!--Optional:--> 
     <urn:Password>test</urn:Password> 
     <!--Optional:--> 
     <urn:TrustedId>?</urn:TrustedId> 
    </urn:Login> 
    <!--You have a CHOICE of the next 46 items at this level--> 
    <urn:AccrualRequest documentNumber="?" postingDate="?" locationCode="?" returnAssistedParametersIndicator="?" returnGeneratedLineItemsIndicator="?" deliveryTerm="?" documentDate="?" transactionId="?" transactionType="?" simplificationCode="?" recoverableDate="?" postToJournal="true"> 
     <!--Optional:--> 
     <urn:Currency isoCurrencyName="?" isoCurrencyCodeAlpha="?" isoCurrencyCodeNum="?"/> 
     <!--Optional:--> 
     <urn:OriginalCurrency isoCurrencyName="?" isoCurrencyCodeAlpha="?" isoCurrencyCodeNum="?"/> 
     <!--Optional:--> 
     <urn:Buyer isTaxExempt="false" exemptionReasonCode="?"> 
      <!--Optional:--> 
      <urn:Company>?</urn:Company> 
      <!--Optional:--> 
      <urn:Division>?</urn:Division> 
      <!--Optional:--> 
      <urn:Department>?</urn:Department> 
      <!--Optional:--> 
      <urn:Recipient> 
       <urn:RecipientCode classCode="?" isBusinessIndicator="?">?</urn:RecipientCode> 
       <!--Zero or more repetitions:--> 
       <urn:TaxRegistration isoCountryCode="?" mainDivision="?" hasPhysicalPresenceIndicator="?"> 
       <!--Optional:--> 
       <urn:TaxRegistrationNumber>?</urn:TaxRegistrationNumber> 
       <!--0 to 4 repetitions:--> 
       <urn:NexusOverride locationRole="?" country="?" mainDivision="?" subDivision="?" city="?" district="?"/> 
       <!--Zero or more repetitions:--> 
       <urn:PhysicalLocation taxAreaId="?"> 
        <!--Optional:--> 
        <urn:StreetAddress1>?</urn:StreetAddress1> 
        <!--Optional:--> 
        <urn:StreetAddress2>?</urn:StreetAddress2> 
        <!--Optional:--> 
        <urn:City>?</urn:City> 
        <!--Optional:--> 
        <urn:MainDivision>?</urn:MainDivision> 
        <!--Optional:--> 
        <urn:SubDivision>?</urn:SubDivision> 
        <!--Optional:--> 
        <urn:PostalCode>?</urn:PostalCode> 
        <!--Optional:--> 
        <urn:Country>?</urn:Country> 
       </urn:PhysicalLocation> 
       </urn:TaxRegistration> 
      </urn:Recipient> 
      <!--Optional:--> 
      <urn:Destination taxAreaId="?" locationCustomsStatus="?" locationCode="?" externalJurisdictionCode="?"> 
       <!--Optional:--> 
       <urn:StreetAddress1>?</urn:StreetAddress1> 
       <!--Optional:--> 
       <urn:StreetAddress2>?</urn:StreetAddress2> 
       <!--Optional:--> 
       <urn:City>?</urn:City> 
       <!--Optional:--> 
       <urn:MainDivision>?</urn:MainDivision> 
       <!--Optional:--> 
       <urn:SubDivision>?</urn:SubDivision> 
       <!--Optional:--> 
       <urn:PostalCode>?</urn:PostalCode> 
       <!--Optional:--> 
       <urn:Country>?</urn:Country> 
       <!--Optional:--> 
       <urn:CurrencyConversion isoCurrencyName="?" isoCurrencyCodeAlpha="?" isoCurrencyCodeNum="?">?</urn:CurrencyConversion> 
      </urn:Destination> 
      <!--Optional:--> 
      <urn:AdministrativeDestination taxAreaId="?" locationCustomsStatus="?" locationCode="?" externalJurisdictionCode="?"> 
       <!--Optional:--> 
       <urn:StreetAddress1>?</urn:StreetAddress1> 
       <!--Optional:--> 
       <urn:StreetAddress2>?</urn:StreetAddress2> 
       <!--Optional:--> 
       <urn:City>?</urn:City> 
       <!--Optional:--> 
       <urn:MainDivision>?</urn:MainDivision> 
       <!--Optional:--> 
       <urn:SubDivision>?</urn:SubDivision> 
       <!--Optional:--> 
       <urn:PostalCode>?</urn:PostalCode> 
       <!--Optional:--> 
       <urn:Country>?</urn:Country> 
       <!--Optional:--> 
       <urn:CurrencyConversion isoCurrencyName="?" isoCurrencyCodeAlpha="?" isoCurrencyCodeNum="?">?</urn:CurrencyConversion> 
      </urn:AdministrativeDestination> 
      <!--Optional:--> 
      <urn:ExemptionCertificate exemptionCertificateNumber="?">?</urn:ExemptionCertificate> 
      <!--Zero or more repetitions:--> 
      <urn:TaxRegistration isoCountryCode="?" mainDivision="?" hasPhysicalPresenceIndicator="?"> 
       <!--Optional:--> 
       <urn:TaxRegistrationNumber>?</urn:TaxRegistrationNumber> 
       <!--0 to 4 repetitions:--> 
       <urn:NexusOverride locationRole="?" country="?" mainDivision="?" subDivision="?" city="?" district="?"/> 
       <!--Zero or more repetitions:--> 
       <urn:PhysicalLocation taxAreaId="?"> 
       <!--Optional:--> 
       <urn:StreetAddress1>?</urn:StreetAddress1> 
       <!--Optional:--> 
       <urn:StreetAddress2>?</urn:StreetAddress2> 
       <!--Optional:--> 
       <urn:City>?</urn:City> 
       <!--Optional:--> 
       <urn:MainDivision>?</urn:MainDivision> 
       <!--Optional:--> 
       <urn:SubDivision>?</urn:SubDivision> 
       <!--Optional:--> 
       <urn:PostalCode>?</urn:PostalCode> 
       <!--Optional:--> 
       <urn:Country>?</urn:Country> 
       </urn:PhysicalLocation> 
      </urn:TaxRegistration> 
     </urn:Buyer> 
     <!--Optional:--> 
      <!--Zero or more repetitions:--> 
      <urn:TaxRegistration isoCountryCode="?" mainDivision="?" hasPhysicalPresenceIndicator="?"> 
       <!--Optional:--> 
       <urn:TaxRegistrationNumber>?</urn:TaxRegistrationNumber> 
       <!--0 to 4 repetitions:--> 
       <urn:NexusOverride locationRole="?" country="?" mainDivision="?" subDivision="?" city="?" district="?"/> 
       <!--Zero or more repetitions:--> 
       <urn:PhysicalLocation taxAreaId="?"> 
       <!--Optional:--> 
       <urn:StreetAddress1>?</urn:StreetAddress1> 
       <!--Optional:--> 
       <urn:StreetAddress2>?</urn:StreetAddress2> 
       <!--Optional:--> 
       <urn:City>?</urn:City> 
       <!--Optional:--> 
       <urn:MainDivision>?</urn:MainDivision> 
       <!--Optional:--> 
       <urn:SubDivision>?</urn:SubDivision> 
       <!--Optional:--> 
       <urn:PostalCode>?</urn:PostalCode> 
       <!--Optional:--> 
       <urn:Country>?</urn:Country> 
       </urn:PhysicalLocation> 
      </urn:TaxRegistration> 
     </urn:Vendor> 
     <!--1 or more repetitions:--> 
     <urn:LineItem lineItemNumber="?" taxDate="?" isMulticomponent="?" locationCode="?" deliveryTerm="?" postingDate="?" costCenter="?" departmentCode="?" generalLedgerAccount="?" materialCode="?" projectNumber="?" usage="?" usageClass="?" vendorSKU="?" countryOfOriginISOCode="?" modeOfTransport="?" natureOfTransaction="?" intrastatCommodityCode="?" netMassKilograms="?" lineItemId="?" recoverableDate="?" titleTransfer="?" chainTransactionPhase="?"> 
      <!--Optional:--> 
      <urn:Buyer isTaxExempt="false" exemptionReasonCode="?"> 
       <!--Optional:--> 
       <urn:Company>?</urn:Company> 
       <!--Optional:--> 
       <urn:Division>?</urn:Division> 
       <!--Optional:--> 
       <urn:Department>?</urn:Department> 
       <!--Optional:--> 
       <urn:Recipient> 
       <urn:RecipientCode classCode="?" isBusinessIndicator="?">?</urn:RecipientCode> 
       <!--Zero or more repetitions:--> 
       <urn:TaxRegistration isoCountryCode="?" mainDivision="?" hasPhysicalPresenceIndicator="?"> 
        <!--Optional:--> 
        <urn:TaxRegistrationNumber>?</urn:TaxRegistrationNumber> 
        <!--0 to 4 repetitions:--> 
        <urn:NexusOverride locationRole="?" country="?" mainDivision="?" subDivision="?" city="?" district="?"/> 
        <!--Zero or more repetitions:--> 
        <urn:PhysicalLocation taxAreaId="?"> 
         <!--Optional:--> 
         <urn:StreetAddress1>?</urn:StreetAddress1> 
         <!--Optional:--> 
         <urn:StreetAddress2>?</urn:StreetAddress2> 
         <!--Optional:--> 
         <urn:City>?</urn:City> 
         <!--Optional:--> 
         <urn:MainDivision>?</urn:MainDivision> 
         <!--Optional:--> 
         <urn:SubDivision>?</urn:SubDivision> 
         <!--Optional:--> 
         <urn:PostalCode>?</urn:PostalCode> 
         <!--Optional:--> 
         <urn:Country>?</urn:Country> 
        </urn:PhysicalLocation> 

    <urn:TaxAreaRequest> 
     <!--Optional:--> 
     <urn:TaxAreaLookup asOfDate="2008-01-01" lookupId="?"> 
      <!--You have a CHOICE of the next 3 items at this level--> 
      <urn:TaxAreaId>?</urn:TaxAreaId> 
      <urn:PostalAddress> 
       <!--Optional:--> 
       <urn:StreetAddress1>?</urn:StreetAddress1> 
       <!--Optional:--> 
       <urn:StreetAddress2>?</urn:StreetAddress2> 
       <!--Optional:--> 
       <urn:City>HUNTSVILLE</urn:City> 
       <!--Optional:--> 
       <urn:MainDivision>AL</urn:MainDivision> 
       <!--Optional:--> 
       <urn:SubDivision>MADISON</urn:SubDivision> 
       <!--Optional:--> 
       <urn:PostalCode>35801</urn:PostalCode> 
       <!--Optional:--> 
       <urn:Country>USA</urn:Country> 
      </urn:PostalAddress> 
      <urn:ExternalJurisdiction> 
       <urn:ExternalJurisdictionCode>?</urn:ExternalJurisdictionCode> 
       <urn:Country>?</urn:Country> 
      </urn:ExternalJurisdiction> 
     </urn:TaxAreaLookup> 
    </urn:TaxAreaRequest> 
    <urn:TaxAreaResponse> 
     <!--Zero or more repetitions:--> 
     <urn:TaxAreaResult taxAreaId="?" asOfDate="?" confidenceIndicator="?"> 
      <!--Zero or more repetitions:--> 
      <urn:Jurisdiction jurisdictionLevel="?" jurisdictionId="?" effectiveDate="?" expirationDate="?" externalJurisdictionCode="?">?</urn:Jurisdiction> 
      <!--Zero or more repetitions:--> 
      <urn:PostalAddress> 
       <!--Optional:--> 
       <urn:StreetAddress1>?</urn:StreetAddress1> 
       <!--Optional:--> 
       <urn:StreetAddress2>?</urn:StreetAddress2> 
       <!--Optional:--> 
       <urn:City>?</urn:City> 
       <!--Optional:--> 
       <urn:MainDivision>?</urn:MainDivision> 
       <!--Optional:--> 
       <urn:SubDivision>?</urn:SubDivision> 
       <!--Optional:--> 
       <urn:PostalCode>?</urn:PostalCode> 
       <!--Optional:--> 
       <urn:Country>?</urn:Country> 
      </urn:PostalAddress> 
      <!--Zero or more repetitions:--> 
      <urn:Status lookupResult="?">?</urn:Status> 
     </urn:TaxAreaResult> 
    </urn:TaxAreaResponse> 
    <urn:FindTaxAreasRequest> 
     <!--1 or more repetitions:--> 
     <urn:TaxAreaLookup asOfDate="?" lookupId="?"> 
      <!--You have a CHOICE of the next 3 items at this level--> 
      <urn:TaxAreaId>?</urn:TaxAreaId> 
      <urn:PostalAddress> 
       <!--Optional:--> 
       <urn:StreetAddress1>?</urn:StreetAddress1> 
       <!--Optional:--> 
       <urn:StreetAddress2>?</urn:StreetAddress2> 
       <!--Optional:--> 
       <urn:City>?</urn:City> 
       <!--Optional:--> 
       <urn:MainDivision>?</urn:MainDivision> 
       <!--Optional:--> 
       <urn:SubDivision>?</urn:SubDivision> 
       <!--Optional:--> 
       <urn:PostalCode>?</urn:PostalCode> 
       <!--Optional:--> 
       <urn:Country>?</urn:Country> 
      </urn:PostalAddress> 
      <urn:ExternalJurisdiction> 
       <urn:ExternalJurisdictionCode>?</urn:ExternalJurisdictionCode> 
       <urn:Country>?</urn:Country> 
      </urn:ExternalJurisdiction> 
     </urn:TaxAreaLookup> 
    </urn:FindTaxAreasRequest> 
    <urn:FindTaxAreasResponse> 
     <!--Zero or more repetitions:--> 
     <urn:TaxAreaLookupResult lookupId="?"> 
      <!--Zero or more repetitions:--> 
      <urn:TaxAreaResult taxAreaId="?" asOfDate="?" confidenceIndicator="?"> 
       <!--Zero or more repetitions:--> 
       <urn:Jurisdiction jurisdictionLevel="?" jurisdictionId="?" effectiveDate="?" expirationDate="?" externalJurisdictionCode="?">?</urn:Jurisdiction> 
       <!--Zero or more repetitions:--> 
       <urn:PostalAddress> 
       <!--Optional:--> 
       <urn:StreetAddress1>?</urn:StreetAddress1> 
       <!--Optional:--> 
       <urn:StreetAddress2>?</urn:StreetAddress2> 
       <!--Optional:--> 
       <urn:City>?</urn:City> 
       <!--Optional:--> 
       <urn:MainDivision>?</urn:MainDivision> 
       <!--Optional:--> 
       <urn:SubDivision>?</urn:SubDivision> 
       <!--Optional:--> 
       <urn:PostalCode>?</urn:PostalCode> 
       <!--Optional:--> 
       <urn:Country>?</urn:Country> 
       </urn:PostalAddress> 
       <!--Zero or more repetitions:--> 
       <urn:Status lookupResult="?">?</urn:Status> 
      </urn:TaxAreaResult> 
      <!--Optional:--> 
      <urn:LookupException> 
       <!--Optional:--> 
       <urn:ExceptionType>?</urn:ExceptionType> 
       <!--Optional:--> 
       <urn:RootCause>?</urn:RootCause> 
      </urn:LookupException> 
     </urn:TaxAreaLookupResult> 
    </urn:FindTaxAreasResponse> 
    <urn:VersionRequest/> 
    <urn:VersionResponse> 
     <!--Optional:--> 
     <urn:ProductVersions> 
      <!--1 or more repetitions:--> 
      <urn:ProductVersion productName="?">?</urn:ProductVersion> 
     </urn:ProductVersions> 
     <!--Optional:--> 
     <urn:LibraryVersions> 
      <!--1 or more repetitions:--> 
      <urn:LibraryVersion libraryName="?" libraryOwner="?">?</urn:LibraryVersion> 
     </urn:LibraryVersions> 
     <!--Optional:--> 
     <urn:DatabaseVersions> 
      <!--1 or more repetitions:--> 
      <urn:DatabaseVersion logicalName="?"> 
       <urn:SchemaVersion>?</urn:SchemaVersion> 
       <urn:PlatformVersion vendorName="?">?</urn:PlatformVersion> 
       <urn:DriverVersion driverName="?">?</urn:DriverVersion> 
       <!--Optional:--> 
       <urn:DataContentVersions> 
       <!--1 or more repetitions:--> 
       <urn:DataContentVersion contentName="?">?</urn:DataContentVersion> 
       </urn:DataContentVersions> 
      </urn:DatabaseVersion> 
     </urn:DatabaseVersions> 
     <!--Optional:--> 
     <urn:ConfigurationVersion>?</urn:ConfigurationVersion> 
     <!--Optional:--> 
     <urn:MessageResourceVersion>?</urn:MessageResourceVersion> 
     <!--Optional:--> 
     <urn:OperatingSystemVersion operatingSystemName="?">?</urn:OperatingSystemVersion> 
     <!--Optional:--> 
     <urn:JavaVirtualMachineVersion jvmName="?">?</urn:JavaVirtualMachineVersion> 
    </urn:VersionResponse> 
    <!--Optional:--> 
    <urn:ApplicationData> 
     <!--Optional:--> 
     <urn:Sender>?</urn:Sender> 
     <!--Optional:--> 
     <urn:MessageLogging returnLogEntries="?"> 
      <!--Zero or more repetitions:--> 
      <urn:OverrideLoggingThreshold thresholdScope="?">?</urn:OverrideLoggingThreshold> 
     </urn:MessageLogging> 
     <!--Zero or more repetitions:--> 
     <urn:LogEntry logLevel="?" instanceId="?" threadId="?" className="?"> 
      <urn:Message>?</urn:Message> 
      <!--Optional:--> 
      <urn:Exception>?</urn:Exception> 
     </urn:LogEntry> 
     <!--Optional:--> 
     <urn:ResponseTimeMS>?</urn:ResponseTimeMS> 
    </urn:ApplicationData> 
    </urn:VertexEnvelope> 

Я получил его вес ork спасибо!

правильный формат:

"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:urn='urn:vertexinc:o-series:tps:6:0'> 
<soapenv:Header/> 
<soapenv:Body> 
    <urn:VertexEnvelope> 
    <urn:Login> 
     <urn:UserName>test</urn:UserName> 
     <urn:Password>test</urn:Password> 
    </urn:Login> 
    <urn:TaxAreaRequest> 
     <urn:TaxAreaLookup asOfDate='2008-01-01' > 
      <urn:PostalAddress> 
       <urn:City>HUNTSVILLE</urn:City> 
       <urn:MainDivision>AL</urn:MainDivision> 
       <urn:SubDivision>MADISON</urn:SubDivision> 
       <urn:PostalCode>35801</urn:PostalCode> 
       <urn:Country>USA</urn:Country> 
      </urn:PostalAddress> 
     </urn:TaxAreaLookup> 
    </urn:TaxAreaRequest> 
    </urn:VertexEnvelope> 
    </soapenv:Body> 
</soapenv:Envelope>" 
+0

Стандартный комментарий: вы пробовали свой запрос с помощью SoapUI? Вы сравнили различия в сообщениях SOAP между SoapUI и сгенерированным вами Savon? –

+0

Да, я попробовал свой запрос с помощью SOAP UI и получил ту же ошибку. Я добавлю эту деталь выше. – BC00

+0

Я решил проблему, спасибо – BC00

ответ

1
"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:urn='urn:vertexinc:o-series:tps:6:0'> 
<soapenv:Header/> 
<soapenv:Body> 
<urn:VertexEnvelope> 
<urn:Login> 
    <urn:UserName>test</urn:UserName> 
    <urn:Password>test</urn:Password> 
</urn:Login> 
<urn:TaxAreaRequest> 
    <urn:TaxAreaLookup asOfDate='2008-01-01' > 
     <urn:PostalAddress> 
      <urn:City>HUNTSVILLE</urn:City> 
      <urn:MainDivision>AL</urn:MainDivision> 
      <urn:SubDivision>MADISON</urn:SubDivision> 
      <urn:PostalCode>35801</urn:PostalCode> 
      <urn:Country>USA</urn:Country> 
     </urn:PostalAddress> 
    </urn:TaxAreaLookup> 
</urn:TaxAreaRequest> 
</urn:VertexEnvelope> 
</soapenv:Body> 
</soapenv:Envelope>" 
0

вы пытались с помощью CalculateTaxString с Vertex? Мне было интересно, должно ли это выглядеть примерно так. любая помощь была бы большой.

"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:urn='urn:vertexinc:o-series:tps:6:0'> 
<soapenv:Body> 
<urn:VertexEnvelope> 
<urn:Login> 
    <urn:UserName>Dmainc</urn:UserName> 
    <urn:Password>Monday1</urn:Password> 
</urn:Login> 
<urn:QuatationRequest documentDate='2008-01-01' transactionType="SALE"> 
    <urn:Currency/> 
     <urn:Customer> 
     <urn:CustomerCode classCode="2002"/> 
     <urn:Destination> 
      <urn:City>Huntsville</urn:City> 
      <urn:MainDivision>AL</urn:MainDivision> 
      <urn:SubDivision>Madison</urn:SubDivision> 
      <urn:PostalCode>35801</urn:PostalCode> 
      <urn:Country>USA</urn:Country> 
     </urn:Destination> 
     </urn:Customer> 
     <urn:LineItem lineItemNumber="1" lineItemId="1" isMulticomponent="false"> 
     <urn:Product productClass="product class attribute value">product code value</urn:Product> 
     <urn:Quantity>1.0</urn:Quantity> 
     <urn:Freight>0</urn:Freight> 
     <urn:UnitPrice>1000</urn:UnitPrice> 
     <urn:ExtendedPrice>1000</urn:ExtendedPrice> 
     </urn:LineItem> 
</urn:QuatationRequest> 
</urn:VertexEnvelope> 
</soapenv:Body> 
</soapenv:Envelope>"