SOAP Despatcher

From PeformIQ Upgrade
Revision as of 12:41, 24 January 2008 by PeterHarding (talk | contribs) (New page: = Python HTTPLIB version = {{{ $ cat desp_02.py #!/usr/bin/env python import os import binascii import httplib import urllib from copy import copy #-----------------------------------...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Python HTTPLIB version

{{{ $ cat desp_02.py

  1. !/usr/bin/env python

import os import binascii import httplib import urllib

from copy import copy

  1. -------------------------------------------------------------------------------

post_data = urllib.urlencode({'spam': 1, 'eggs': 2})

  1. "Content-type" : "application/x-www-form-urlencoded",
  1. -------------------------------------------------------------------------------

post_headers = {

  'Content-type'    : 'text/xml;charset=UTF-8',
  'SOAPAction'      : ,
  'User-Agent'      : 'Jakarta Commons-HttpClient/3.0.1',
  'Host'            : 'hx403'

}


payload_constants = (13, 21110, 603010230)

  1. post_data = {}
  1. ue_post_data = urllib.urlencode(post_data)
  1. -------------------------------------------------------------------------------

payload_template = """<?xml version="1.0" encoding="UTF-8"?> <PCMS xmlns="http://www.auspost.com.au/xml/pcms">

 <SendPCMSManifest>
   <header>
     <TransactionDateTime>2008-01-10T11:30:00.0Z</TransactionDateTime>
     <TransactionId>AP-0000000001</TransactionId>
     <TransactionSequence>1</TransactionSequence>
     <ApplicationId>MERCHANT</ApplicationId>
   </header>
   <body>
     <PCMSManifest>
       <MerchantLocationId>ALG</MerchantLocationId>
       <ManifestNumber>P%d</ManifestNumber>
       <DateSubmitted>2008-01-21T11:30:00.0Z</DateSubmitted>
       <DateLodged>2008-01-21T11:30:00.0Z</DateLodged>
       <PCMSConsignment>
         <ConsignmentNumber>ALG%07d</ConsignmentNumber>
         <ChargeCode>S1</ChargeCode>
         <InternalChargebackAccount>Finance</InternalChargebackAccount>
         <ReferenceNo1>Job #1</ReferenceNo1>
         <ReferenceNo2>Invoice #1</ReferenceNo2>
         <DeliveryName>Joe Bloggs</DeliveryName>
         <DeliveryCompanyName>Joe's Garage</DeliveryCompanyName>
         <DeliveryAddressLine1>Level 22</DeliveryAddressLine1>
         <DeliveryAddressLine2>150 Lonsdale St</DeliveryAddressLine2>
         <DeliveryAddressLine3>Off Russell St</DeliveryAddressLine3>
         <DeliveryAddressLine4>Corner of Lonsdale St</DeliveryAddressLine4>
         <DeliveryPhoneNumber>+61398989898</DeliveryPhoneNumber>
         <DeliveryEmailAddress>joe.bloggs@test.com.au</DeliveryEmailAddress>
         <DeliverySuburb>BUSSELTON</DeliverySuburb>
         <DeliveryStateCode>WA</DeliveryStateCode>
         <DeliveryPostcode>6280</DeliveryPostcode>
         <DeliveryCountryCode>AU</DeliveryCountryCode>
         <DeliveryInstructions>Pick up parcel.</DeliveryInstructions>
         <IsInternationalDelivery>false</IsInternationalDelivery>
         <ReturnName>Rocket Records P/L</ReturnName>
         <ReturnAddressLine1>58-76 Stephenson Rd</ReturnAddressLine1>
         <ReturnSuburb>Cremorne</ReturnSuburb>
         <ReturnStateCode>VIC</ReturnStateCode>
         <ReturnPostcode>3121</ReturnPostcode>
         <ReturnCountryCode>AU</ReturnCountryCode>
         <CreatedDateTime>2008-01-21T12:18:32.106+11:00</CreatedDateTime>
         <PostChargeToAccount>5903000</PostChargeToAccount>
         <IsSignatureRequired>Y</IsSignatureRequired>
         <CTCAmount>0.00</CTCAmount>
         <DeliverPartConsignment>N</DeliverPartConsignment>
         <ContainsDangerousGoods>false</ContainsDangerousGoods>
         <PCMSDomesticArticle>
           <ArticleNumber>ALG%013d</ArticleNumber>
           <BarcodeArticleNumber>99700122BBD100000101011503000</BarcodeArticleNumber>
           <Length>12</Length>
           <Width>14</Width>
           <Height>16</Height>
           <ActualWeight>0.5</ActualWeight>
           <CubicWeight>0.5</CubicWeight>
           <ArticleDescription>SOAP Test Article</ArticleDescription>
           <IsTransitCoverRequired>N</IsTransitCoverRequired>
           <TransitCoverAmount>0</TransitCoverAmount>
           <ContentsItem>
             <GoodsDescription>SOAP Test Goods</GoodsDescription>
             <Weight>0.5</Weight>
             <Quantity>1</Quantity>
             <UnitValue>100.00</UnitValue>
             <Value>100</Value>
           </ContentsItem>
         </PCMSDomesticArticle>
       </PCMSConsignment>
     </PCMSManifest>
   </body>
 </SendPCMSManifest>

</PCMS>"""

  1. -------------------------------------------------------------------------------

soap_env = """<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:epar="http://www.auspost.com.au/eParcel"> <soapenv:Header/> <soapenv:Body> <epar:submitManifestForDespatch soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <string xsi:type="xsd:string"><![CDATA[%s]]></string></epar:submitManifestForDespatch></soapenv:Body> </soapenv:Envelope>"""


  1. -------------------------------------------------------------------------------

cookie = binascii.b2a_base64("graeme3000:password")[:-1]

print '[%s]' % cookie

headers = copy(post_headers)

headers['Authorization'] = 'Basic %s' % cookie headers['Content-Length'] = len(post_data)

print headers

DO = 'POST' URL = '/despatchManifest/DespatchManifestWS' HOST = 'hx403'

manifest = payload_template % payload_constants

print manifest

post_data = soap_env % manifest

print post_data

  1. -------------------------------------------------------------------------------

conn = httplib.HTTPConnection(HOST)

conn.request(DO, URL, post_data_01, headers)

response = conn.getresponse()

print response.status, response.reason

data = response.read()

print data

conn.close()

  1. -------------------------------------------------------------------------------

}}}