ParcelUploadDirectedGZip - LorenData/ECGrid-API GitHub Wiki
Upload any format Parcel to the OutBox with GZip compression.
public int ParcelUploadDirectedGZip(string SessionID,
int NetworkID,
int MailboxID,
string FileName,
int Bytes,
[XmlElementAttribute(DataType="base64Binary")] byte[] Content,
int ECGridIDFrom,
int ECGridIDTo)
- SessionID - String - GUID
- NetworkID - Integer
- MailboxID - Integer
- FileName - String
- Bytes - Integer
- Content - byte[]
- ECGridIDFrom - Integer
- ECGridIDTo - Integer
ParcelID - The value assigned to a specific Parcel Record - Integer
This method allows Parcels to be directly uploaded to ECGrid through the ECGridOS interface using GZip compression. Other communication channels are available such as FTP or AS2.
FileName must be a valid Windows filename, invalid FileNames will generate SOAP Exception.
Bytes must equal the Content length, or a SOAP Exception will be raised.
C#
using System.Xml;
using System.Web.Services.Protocols;
using ECGridService = <ProjectName>.net.ecgridos;
try
{
using (ECGridService.ECGridOSAPIv3 ECGrid = new ECGridService.ECGridOSAPIv3())
{
try
{
string SessionID = "00000000-0000-0000-0000-000000000000";
int NetworkID = 56845;
int MailboxID = 5684456;
int ECGridIDFrom = 567;
int ECGridIDTo = 4844;
string FilePath = @"C:\EDI\DataFile.txt";
FileInfo X12FileInfo = new FileInfo(FilePath);
string FileName = X12FileInfo.Name;
byte[] ContentFromFile = File.ReadAllBytes(FilePath);
using (FileStream fs = new FileStream(FilePath,FileMode.Open))
{
using (var memoryStream = new MemoryStream())
{
fs.CopyTo(memoryStream);
ContentFromFile = memoryStream.ToArray();
}
}
// Compress using GZIP
byte[] compressedContent;
using (MemoryStream memory = new MemoryStream())
{
using (GZipStream gzip = new GZipStream(memory,CompressionMode.Compress, true))
{
gzip.Write(ContentFromFile, 0, ContentFromFile.Length);
}
compressedContent = memory.ToArray();
}
/* .Net will Auto Convert byte[] to Base64 on Transport.
Below is the explicit Conversion for your reference
string Base64FileString = Convert.ToBase64String(ContentFromFile);
byte[] ContentBase64EncodedBytes = Convert.FromBase64String(Base64FileString);
*/
int ParcelID = ECGrid.ParcelUploadDirectedGZip(SessionID, NetworkID, MailboxID, FileName, compressedContent.Length, compressedContent, ECGridIDFrom, ECGridIDTo);
}
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()); }
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/ParcelUploadDirectedGZip"
<?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>
<ParcelUploadDirectedGZip xmlns="http://ecgridos.net/">
<SessionID>string</SessionID>
<NetworkID>int</NetworkID>
<MailboxID>int</MailboxID>
<FileName>string</FileName>
<Bytes>int</Bytes>
<Content>base64Binary</Content>
<ECGridIDFrom>int</ECGridIDFrom>
<ECGridIDTo>int</ECGridIDTo>
</ParcelUploadDirectedGZip>
</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>
<ParcelUploadDirectedGZipResponse xmlns="http://ecgridos.net/">
<ParcelUploadDirectedGZipResult>int</ParcelUploadDirectedGZipResult>
</ParcelUploadDirectedGZipResponse>
</soap:Body>
</soap:Envelope>
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>
<ParcelUploadDirectedGZip xmlns="http://ecgridos.net/">
<SessionID>string</SessionID>
<NetworkID>int</NetworkID>
<MailboxID>int</MailboxID>
<FileName>string</FileName>
<Bytes>int</Bytes>
<Content>base64Binary</Content>
<ECGridIDFrom>int</ECGridIDFrom>
<ECGridIDTo>int</ECGridIDTo>
</ParcelUploadDirectedGZip>
</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>
<ParcelUploadDirectedGZipResponse xmlns="http://ecgridos.net/">
<ParcelUploadDirectedGZipResult>int</ParcelUploadDirectedGZipResult>
</ParcelUploadDirectedGZipResponse>
</soap12:Body>
</soap12:Envelope>
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/ParcelUploadDirectedGZip?SessionID=string&NetworkID=string&MailboxID=string&FileName=string&Bytes=string&Content=string&Content=string&ECGridIDFrom=string&ECGridIDTo=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"?>
<int xmlns="http://ecgridos.net/">int</int>
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/ParcelUploadDirectedGZip HTTP/1.1
Host: ecgridos.net
Content-Type: application/x-www-form-urlencoded
Content-Length: length
SessionID=string&NetworkID=string&MailboxID=string&FileName=string&Bytes=string&Content=string&Content=string&ECGridIDFrom=string&ECGridIDTo=string
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<int xmlns="http://ecgridos.net/">int</int>