ParcelDownloadGZip

Greg Kolinski edited this page Sep 20, 2017 · 1 revision

Back To Common API Calls


Download Parcel from InBox or Archive with GZip compression.

 public FileInfo ParcelDownloadGZip(string SessionID, long ParcelID)

Parameters:


Returns

FileInfo


Remarks

Downloads a complete Parcel from ECGrid as long as it has not been archived.

Once a Parcel has been successfully downloaded from the InBox the first time, ParcelDownloadConfirm() should be called to remove it from the pending download list.

If the payload is non-EDI data, uploaded with ParcelUploadEx() or ParcelUploadGZipEx(), then function will automatically strip the envelope and restore the original file name.


Code Example

C#

using System.Xml;
using System.Web.Services.Protocols;
using System.IO.Compression;
using System.IO;
using System.Text;
using ECGridService = <ProjectName>.net.ecgridos;

try
{
    using (ECGridService.ECGridOSAPIv3 ECGrid = new ECGridService.ECGridOSAPIv3())
    {
        try
        {
            string SessionID = "00000000-0000-0000-0000-000000000000";
            long ParcelID = 46446847;

            ECGridService.FileInfo ParcelDownloadGZipFile = ECGrid.ParcelDownloadGZip(SessionID, ParcelID);

            // Write GZ to String/File using Stream Copy To
            string ParcelString = "";
            string LocalFilePath = Path.Combine(@"C:\EDI", ParcelDownloadGZipFile.FileName);

            // Write Compressed Byte[] to Memory Stream
            using (var compressedMemoryStream = new MemoryStream(ParcelDownloadGZipFile.Content))
            {
                // Create Decompressed Output Memory Stream
                using (var decompressedOutputMemoryStream = new MemoryStream())
                {
                    // GZip Decompress the Compressed Memory Stream
                    using (var gzipDecompressedStream = new GZipStream(compressedMemoryStream, CompressionMode.Decompress))
                    {
                        //Copy the GZip Decompressed MemoryStream to the decompressedOutputMemoryStream
                        gzipDecompressedStream.CopyTo(decompressedOutputMemoryStream);
                    }

                    ParcelString = Encoding.ASCII.GetString(decompressedOutputMemoryStream.ToArray());

                    File.WriteAllBytes(LocalFilePath, decompressedOutputMemoryStream.ToArray());

                    using (FileStream fs = new FileStream(LocalFilePath, FileMode.Create, FileAccess.Write))
                    {
                       fs.Write(decompressedOutputMemoryStream.ToArray(), 0, BitConverter.ToInt32(decompressedOutputMemoryStream.ToArray(),0));
                    }
                }
            }

            // Write GZ to String/File with buffer
            using (MemoryStream compressedMemoryStream = new MemoryStream())
            {
                // Get Length of Compressed Bytes
                // Write Compressed Byte[] to Memory Stream
                int msgLength = BitConverter.ToInt32(ParcelDownloadGZipFile.Content, 0);
                compressedMemoryStream.Write(ParcelDownloadGZipFile.Content, 4, ParcelDownloadGZipFile.Content.Length - 4);

                // Create Byte[] for Decompressed Bytes
                byte[] decompressedBuffer = new byte[msgLength];

                // Start at Compressed Memory Stream buffer Position 0
                // GZip Decompress the Compressed Memory Stream to the Decompressed Byte[] Buffer
                compressedMemoryStream.Position = 0;
                using (GZipStream zip = new GZipStream(compressedMemoryStream, CompressionMode.Decompress))
                {
                    zip.Read(decompressedBuffer, 0, decompressedBuffer.Length);
                }

                // Convert the Decompressed Byte[] Buffer to String
                ParcelString = Encoding.ASCII.GetString(decompressedBuffer);

                File.WriteAllBytes(LocalFilePath, decompressedBuffer);

                using (FileStream fs = new FileStream(LocalFilePath, FileMode.Create, FileAccess.Write))
                {
                    fs.Write(decompressedBuffer,0, decompressedBuffer.Length);
                }
            }

        }
        catch (SoapException SoapEx)
        {
            // See SOAP Exceptions in the Appendix
            var ECG_Ex = CatchException(SoapEx);
            Console.WriteLine($"ECGridOS Soap Exception: {ECG_Ex.ErrorCode} , Item: {ECG_Ex.ErrorItem}, Message: {ECG_Ex.ErrorMessage}, String: {ECG_Ex.ErrorString}");
        }
    } // END USING
}
catch (Exception ex){ Console.WriteLine("Unhandled Exception: " + ex.ToString()); }

SOAP 1.1

The following is a sample SOAP 1.1 request and response. The placeholders shown need to be replaced with actual values.

POST /v3.2/prod/ecgridos.asmx HTTP/1.1
Host: ecgridos.net
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://ecgridos.net/ParcelDownloadGZip"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <ParcelDownloadGZip xmlns="http://ecgridos.net/">
      <SessionID>string</SessionID>
      <ParcelID>long</ParcelID>
    </ParcelDownloadGZip>
  </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <ParcelDownloadGZipResponse xmlns="http://ecgridos.net/">
      <ParcelDownloadGZipResult>
        <ParcelID>long</ParcelID>
        <FileName>string</FileName>
        <FileDate>dateTime</FileDate>
        <Bytes>int</Bytes>
        <Standard>X12 or EDIFACT or TRADACOMS or VDA or XML or TXT or PDF or Binary</Standard>
        <Content>base64Binary</Content>
      </ParcelDownloadGZipResult>
    </ParcelDownloadGZipResponse>
  </soap:Body>
</soap:Envelope>

SOAP 1.2

The following is a sample SOAP 1.2 request and response. The placeholders shown need to be replaced with actual values.

POST /v3.2/prod/ecgridos.asmx HTTP/1.1
Host: ecgridos.net
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <ParcelDownloadGZip xmlns="http://ecgridos.net/">
      <SessionID>string</SessionID>
      <ParcelID>long</ParcelID>
    </ParcelDownloadGZip>
  </soap12:Body>
</soap12:Envelope>
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <ParcelDownloadGZipResponse xmlns="http://ecgridos.net/">
      <ParcelDownloadGZipResult>
        <ParcelID>long</ParcelID>
        <FileName>string</FileName>
        <FileDate>dateTime</FileDate>
        <Bytes>int</Bytes>
        <Standard>X12 or EDIFACT or TRADACOMS or VDA or XML or TXT or PDF or Binary</Standard>
        <Content>base64Binary</Content>
      </ParcelDownloadGZipResult>
    </ParcelDownloadGZipResponse>
  </soap12:Body>
</soap12:Envelope>

HTTP GET

The following is a sample HTTP GET request and response. The placeholders shown need to be replaced with actual values.

GET /v3.2/prod/ecgridos.asmx/ParcelDownloadGZip?SessionID=string&ParcelID=string HTTP/1.1
Host: ecgridos.net
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<FileInfo xmlns="http://ecgridos.net/">
  <ParcelID>long</ParcelID>
  <FileName>string</FileName>
  <FileDate>dateTime</FileDate>
  <Bytes>int</Bytes>
  <Standard>X12 or EDIFACT or TRADACOMS or VDA or XML or TXT or PDF or Binary</Standard>
  <Content>base64Binary</Content>
</FileInfo>

HTTP POST

The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values.

POST /v3.2/prod/ecgridos.asmx/ParcelDownloadGZip HTTP/1.1
Host: ecgridos.net
Content-Type: application/x-www-form-urlencoded
Content-Length: length

SessionID=string&ParcelID=string
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<FileInfo xmlns="http://ecgridos.net/">
  <ParcelID>long</ParcelID>
  <FileName>string</FileName>
  <FileDate>dateTime</FileDate>
  <Bytes>int</Bytes>
  <Standard>X12 or EDIFACT or TRADACOMS or VDA or XML or TXT or PDF or Binary</Standard>
  <Content>base64Binary</Content>
</FileInfo>

Back To Common API Calls

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.