Sample code for 30+ languages & platforms
DataFlex

Alabama Motor Fuel Excise Tax E-Filing SOAP XML POST (NewSubmission)

See more HTTP Misc Examples

Demonstrates how to post a NewSubmission to the Alabama MFET (Motor Fuel Excise Tax) e-File.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Variant vSbXml
FileData    Handle hoSbXmlFileData
    Handle hoXml
    Handle hoHttp
    Variant vSbXml
    Handle hoSbXml
    Variant vResp
    Handle hoResp
Result    Handle hoXmlResult
    Handle hoSbResult
    String sTemp1
    Integer iTemp1

    Move False To iSuccess

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    // --------------------------------------------------------------------------------
    // Also see Chilkat's Online WSDL Code Generator
    // to generate code and SOAP Request and Response XML for each operation in a WSDL.
    // --------------------------------------------------------------------------------

    // Here is an example of an HTTP POST Request we'll be sending:

    // POST /WebServices/MFET/ HTTP/1.1
    // Content-Type: text/xml
    // SOAPAction: NewSubmission
    //  
    // <soapenv:Envelope
    //   xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    //   xmlns:tem="http://tempuri.org/"
    //   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    //   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    //   <soapenv:Header/>
    //   <soapenv:Body>
    //     <tem:NewSubmission>
    //       <tem:UserName>yourusername</tem:UserName>
    //       <tem:Password>yourpassword</tem:Password>
    //       <tem:File xsi:type="xsd:base64Binary">TRANSMISSION_XML_FILE_CONTENTS_AS_BASE64</tem:File>
    //     </tem:NewSubmission>
    //   </soapenv:Body>
    // </soapenv:Envelope>

    // In the above XML, the "TRANSMISSION_XML_FILE_CONTENTS_AS_BASE64" contains the base64 encoded
    // string of the XML file that contains "<Transmission> ... </Transmission>"
    // First let's load the transmission XML file and get the contents as base64.
    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbXmlFileData
    If (Not(IsComObjectCreated(hoSbXmlFileData))) Begin
        Send CreateComObject of hoSbXmlFileData
    End
    Get ComLoadFile Of hoSbXmlFileData "qa_data/xml/AL_SR_999802_test.xml" "utf-8" To iSuccess
    If (iSuccess <> True) Begin
        Showln "Failed to load XML file."
        Procedure_Return
    End

    Get ComEncode Of hoSbXmlFileData "base64" "utf-8" To iSuccess

    // Build the XMl that will be the body of the HTTP request.
    Get Create (RefClass(cComChilkatXml)) To hoXml
    If (Not(IsComObjectCreated(hoXml))) Begin
        Send CreateComObject of hoXml
    End
    Set ComTag Of hoXml To "soapenv:Envelope"
    Get ComAddAttribute Of hoXml "xmlns:soapenv" "http://schemas.xmlsoap.org/soap/envelope/" To iSuccess
    Get ComAddAttribute Of hoXml "xmlns:tem" "http://tempuri.org/" To iSuccess
    Get ComAddAttribute Of hoXml "xmlns:xsd" "http://www.w3.org/2001/XMLSchema" To iSuccess
    Get ComAddAttribute Of hoXml "xmlns:xsi" "http://www.w3.org/2001/XMLSchema-instance" To iSuccess
    Send ComUpdateChildContent To hoXml "soapenv:Header" ""
    Send ComUpdateChildContent To hoXml "soapenv:Body|tem:NewSubmission|tem:UserName" "yourusername"
    Send ComUpdateChildContent To hoXml "soapenv:Body|tem:NewSubmission|tem:Password" "yourpassword"
    Get ComUpdateAttrAt Of hoXml "soapenv:Body|tem:NewSubmission|tem:File" True "xsi:type" "xsd:base64Binary" To iSuccess
    Get ComGetAsString Of hoSbXmlFileData To sTemp1
    Send ComUpdateChildContent To hoXml "soapenv:Body|tem:NewSubmission|tem:File" sTemp1

    Get Create (RefClass(cComChilkatHttp)) To hoHttp
    If (Not(IsComObjectCreated(hoHttp))) Begin
        Send CreateComObject of hoHttp
    End

    Send ComSetRequestHeader To hoHttp "SoapAction" "NewSubmission"

    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbXml
    If (Not(IsComObjectCreated(hoSbXml))) Begin
        Send CreateComObject of hoSbXml
    End
    Get pvComObject of hoSbXml to vSbXml
    Get ComGetXmlSb Of hoXml vSbXml To iSuccess

    Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
    If (Not(IsComObjectCreated(hoResp))) Begin
        Send CreateComObject of hoResp
    End
    Get pvComObject of hoSbXml to vSbXml
    Get pvComObject of hoResp to vResp
    Get ComHttpSb Of hoHttp "POST" "https://mattest.alabama.gov/WebServices/MFET/" vSbXml "utf-8" "text/xml" vResp To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComStatusCode Of hoResp To iTemp1
    Showln "Response status code = " iTemp1
    Showln "Response body text:"
    Get ComBodyStr Of hoResp To sTemp1
    Showln sTemp1

    // The response will look like this:

    // <?xml version="1.0" encoding="utf-8" ?>
    // <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    //     <s:Body>
    //         <NewSubmissionResponse xmlns="http://tempuri.org/">
    //             <NewSubmissionResult i:type="a:base64Binary" xmlns:a="http://www.w3.org/2001/XMLSchema" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">BASE64_RESULT</NewSubmissionResult>
    //         </NewSubmissionResponse>
    //     </s:Body>
    // </s:Envelope>

    // We can get the base64 result like this:
    Get Create (RefClass(cComChilkatXml)) To hoXmlResult
    If (Not(IsComObjectCreated(hoXmlResult))) Begin
        Send CreateComObject of hoXmlResult
    End
    Get ComBodyStr Of hoResp To sTemp1
    Get ComLoadXml Of hoXmlResult sTemp1 To iSuccess
    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbResult
    If (Not(IsComObjectCreated(hoSbResult))) Begin
        Send CreateComObject of hoSbResult
    End
    Get ComGetChildContent Of hoXmlResult "s:Body|NewSubmissionResponse|NewSubmissionResult" To sTemp1
    Get ComAppend Of hoSbResult sTemp1 To iSuccess
    Get ComDecode Of hoSbResult "base64" "utf-8" To iSuccess
    Showln "Decoded result:"
    Get ComGetAsString Of hoSbResult To sTemp1
    Showln sTemp1

    // A sample of a decoded error response:

    // <?xml version="1.0" encoding="utf-8"?>
    // <!--ADOR Acknowledgement 1-->
    // <Transmission xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.irs.gov/efile">
    //   <Jurisdiction>ALABAMA</Jurisdiction>
    //   <TransmissionId>2018-09-1019:14R000000001</TransmissionId>
    //   <Timestamp>2018-09-10T19:14:12Z</Timestamp>
    //   <Transmitter>
    //     <ETIN>00000</ETIN>
    //   </Transmitter>
    //   <ProcessType>P</ProcessType>
    //   <AgentIdentifier>ACK</AgentIdentifier>
    //   <AcknowledgementID>0</AcknowledgementID>
    //   <AcknowledgementTimeStamp>2018-09-11T21:16:34-05:00</AcknowledgementTimeStamp>
    //   <Errors>
    //     <Error>Process Type must be 'T' when submitted to Testing Web Service</Error>
    //   </Errors>
    // </Transmission>


End_Procedure