Sample code for 30+ languages & platforms
Dart

POST GovTalk XML to https://vrep1-t.cssz.cz/VREP/submission

See more HTTP Misc Examples

Demonstrates how to POST a GovTalk XML message to https://vrep1-t.cssz.cz/VREP/submission

PDF Documentation is at http://www.cssz.cz/NR/rdonlyres/0ACDBB35-F78A-4B1A-8258-7249B55C788E/0/csszpodavacidotazovaciprotokol20110608.pdf

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // This requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  // First prepare the XML body that is to be GZip compressed and then encrypted.
  // Build the following XML..

  // Use the online tool at http://tools.chilkat.io/xmlCreate.cshtml
  // to generate the XML creation code that follows this XML.

  // <?xml version="1.0" encoding="utf-8" ?>
  // <pvpoj xmlns="http://schemas.cssz.cz/POJ/PVPOJ2016">
  //     <prehled verze="2016.0" typPrehledu="N">
  //         <okres>
  //             <kodOSSZ>119</kodOSSZ>
  //             <nazevOSSZ>Praha 9</nazevOSSZ>
  //         </okres>
  //         <obdobi>
  //             <mesic>1</mesic>
  //             <rok>2018</rok>
  //         </obdobi>
  //         <zamestnavatel>
  //             <vs>9992002999</vs>
  //             <IC>49710999</IC>
  //             <nazev>SIT &amp; KHASO v.o.s.</nazev>
  //             <adresa>
  //                 <ulice>Na sp�leni�ti</ulice>
  //                 <cisloDomu>517</cisloDomu>
  //                 <obec>Praha 9</obec>
  //                 <PSC>19032</PSC>
  //                 <stat>CZ</stat>
  //             </adresa>
  //         </zamestnavatel>
  //         <pojistne>
  //             <uhrnVymerovacichZakladu>1104</uhrnVymerovacichZakladu>
  //             <pojistneZamestnance>175</pojistneZamestnance>
  //             <pojistneZamestnavatele>2826</pojistneZamestnavatele>
  //             <pojistneCelkem>4301</pojistneCelkem>
  //         </pojistne>
  //         <platebniUdaje>
  //             <bankaCisloUctu>012345789/0800</bankaCisloUctu>
  //         </platebniUdaje>
  //         <pracovnik>
  //             <jmeno>Matt</jmeno>
  //             <prijmeni>Smith</prijmeni>
  //             <telefon>606796999</telefon>
  //             <email>admin@chilkatsoft.com</email>
  //         </pracovnik>
  //         <datumVyplneni>2018-03-02</datumVyplneni>
  //         <poznamka />
  //     </prehled>
  // </pvpoj>

  final xml = CkXml();
  xml.tag = 'pvpoj';
  xml.addAttribute('xmlns', 'http://schemas.cssz.cz/POJ/PVPOJ2016');
  xml.updateAttrAt('prehled', true, 'verze', '2016.0');
  xml.updateAttrAt('prehled', true, 'typPrehledu', 'N');
  xml.updateChildContent('prehled|okres|kodOSSZ', '119');
  xml.updateChildContent('prehled|okres|nazevOSSZ', 'Praha 9');
  xml.updateChildContent('prehled|obdobi|mesic', '1');
  xml.updateChildContent('prehled|obdobi|rok', '2018');
  xml.updateChildContent('prehled|zamestnavatel|vs', '9992002999');
  xml.updateChildContent('prehled|zamestnavatel|IC', '49710999');
  xml.updateChildContent('prehled|zamestnavatel|nazev', 'SIT & KHASO v.o.s.');
  xml.updateChildContent('prehled|zamestnavatel|adresa|ulice', 'Na sp�leni�ti');
  xml.updateChildContent('prehled|zamestnavatel|adresa|cisloDomu', '517');
  xml.updateChildContent('prehled|zamestnavatel|adresa|obec', 'Praha 9');
  xml.updateChildContent('prehled|zamestnavatel|adresa|PSC', '19032');
  xml.updateChildContent('prehled|zamestnavatel|adresa|stat', 'CZ');
  xml.updateChildContent('prehled|pojistne|uhrnVymerovacichZakladu', '1104');
  xml.updateChildContent('prehled|pojistne|pojistneZamestnance', '175');
  xml.updateChildContent('prehled|pojistne|pojistneZamestnavatele', '2826');
  xml.updateChildContent('prehled|pojistne|pojistneCelkem', '4301');
  xml.updateChildContent('prehled|platebniUdaje|bankaCisloUctu', '012345789/0800');
  xml.updateChildContent('prehled|pracovnik|jmeno', 'Matt');
  xml.updateChildContent('prehled|pracovnik|prijmeni', 'Smith');
  xml.updateChildContent('prehled|pracovnik|telefon', '606796999');
  xml.updateChildContent('prehled|pracovnik|email', 'admin@chilkatsoft.com');
  xml.updateChildContent('prehled|datumVyplneni', '2018-03-02');
  xml.updateChildContent('prehled|poznamka', '');

  xml.emitCompact = true;
  xml.emitXmlDecl = false;

  // Emit the XML into bd.
  final bd = CkBinData();
  bd.appendString(xml.getXml(), 'utf-8');

  // GZip compress the bd contents.
  final gzip = CkGzip();
  // The Filename is not an actual file on disk, but is just the filename string stored in the gzip compressed format.
  gzip.filename = 'pvpoj.xml';
  gzip.compressBd(bd);

  // Encrypt the contents using the government provided cert.
  final cert = CkCert();
  try {
    cert.loadFromFile('qa_data/govs/czech/pvpoj/DISCSSZ2019.cer');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  final crypt = CkCrypt2();
  crypt.cryptAlgorithm = 'pki';

  crypt.pkcs7CryptAlg = 'aes';
  crypt.keyLength = 256;

  try {
    crypt.setEncryptCert(cert);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  try {
    crypt.encryptBd(bd);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // At this point, bd contains the gzip compressed / encrypted XML.

  // Build the following GovTalkMessage XML:

  // <?xml version="1.0" encoding="utf-8"?>
  // <GovTalkMessage xmlns="http://www.govtalk.gov.uk/CM/envelope">
  //   <EnvelopeVersion>2.0</EnvelopeVersion>
  //   <Header>
  //     <MessageDetails>
  //       <Class>CSSZ_PVPOJ</Class>
  //       <Qualifier>request</Qualifier>
  //       <Function>submit</Function>
  //       <TransactionID />
  //       <AuditID />
  //       <CorrelationID />
  //       <ResponseEndPoint PollInterval="0" />
  //       <Transformation>XML</Transformation>
  //       <GatewayTest />
  //       <GatewayTimestamp />
  //     </MessageDetails>
  //     <SenderDetails>
  //       <IDAuthentication>
  //         <SenderID />
  //         <Authentication>
  //           <Method>clear</Method>
  //           <Role />
  //           <Value />
  //         </Authentication>
  //       </IDAuthentication>
  //       <X509Certificate />
  //       <EmailAddress>admin@chilkatsoft.com</EmailAddress>
  //     </SenderDetails>
  //   </Header>
  //   <GovTalkDetails>
  //     <Keys>
  //       <Key Type="vars">9992888999</Key>
  //     </Keys>
  //     <GatewayAdditions />
  //   </GovTalkDetails>
  //   <Body>
  //     <Message xmlns="http://www.cssz.cz/XMLSchema/envelope" version="1.2" eType="PVPOJ16">
  //       <Header>
  //         <Signature xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="bin.base64">Signature goes here</Signature>
  //         <Vendor productName="Abc xyz. s r.o. JKL .NET Client" version="6.0.2.0" />
  //       </Header>
  //       <Body xmlns:dt="urn:schemas-microsoft-com:datatypes" encrypted="yes" contentEncoding="gzip" dt:dt="bin.base64">Base64 goes here
  // </Body>
  //     </Message>
  //   </Body>
  // </GovTalkMessage>
  // 

  // Use the online tool at http://tools.chilkat.io/xmlCreate.cshtml
  // to generate this code.

  xml.clear();
  xml.tag = 'GovTalkMessage';
  xml.addAttribute('xmlns', 'http://www.govtalk.gov.uk/CM/envelope');
  xml.updateChildContent('EnvelopeVersion', '2.0');
  xml.updateChildContent('Header|MessageDetails|Class', 'CSSZ_PVPOJ');
  xml.updateChildContent('Header|MessageDetails|Qualifier', 'request');
  xml.updateChildContent('Header|MessageDetails|Function', 'submit');
  xml.updateChildContent('Header|MessageDetails|TransactionID', '');
  xml.updateChildContent('Header|MessageDetails|AuditID', '');
  xml.updateChildContent('Header|MessageDetails|CorrelationID', '');
  xml.updateAttrAt('Header|MessageDetails|ResponseEndPoint', true, 'PollInterval', '0');
  xml.updateChildContent('Header|MessageDetails|Transformation', 'XML');
  xml.updateChildContent('Header|MessageDetails|GatewayTest', '');
  xml.updateChildContent('Header|MessageDetails|GatewayTimestamp', '');
  xml.updateChildContent('Header|SenderDetails|IDAuthentication|SenderID', '');
  xml.updateChildContent('Header|SenderDetails|IDAuthentication|Authentication|Method', 'clear');
  xml.updateChildContent('Header|SenderDetails|IDAuthentication|Authentication|Role', '');
  xml.updateChildContent('Header|SenderDetails|IDAuthentication|Authentication|Value', '');
  xml.updateChildContent('Header|SenderDetails|X509Certificate', '');
  xml.updateChildContent('Header|SenderDetails|EmailAddress', 'admin@chilkatsoft.com');
  xml.updateAttrAt('GovTalkDetails|Keys|Key', true, 'Type', 'vars');
  xml.updateChildContent('GovTalkDetails|Keys|Key', '9992888999');
  xml.updateChildContent('GovTalkDetails|GatewayAdditions', '');
  xml.updateAttrAt('Body|Message', true, 'xmlns', 'http://www.cssz.cz/XMLSchema/envelope');
  xml.updateAttrAt('Body|Message', true, 'version', '1.2');
  xml.updateAttrAt('Body|Message', true, 'eType', 'PVPOJ16');
  xml.updateAttrAt('Body|Message|Header|Signature', true, 'xmlns:dt', 'urn:schemas-microsoft-com:datatypes');
  xml.updateAttrAt('Body|Message|Header|Signature', true, 'dt:dt', 'bin.base64');
  xml.updateChildContent('Body|Message|Header|Signature', 'Signature goes here');
  xml.updateAttrAt('Body|Message|Header|Vendor', true, 'productName', 'Abc xyz. s r.o. JKL .NET Client');
  xml.updateAttrAt('Body|Message|Header|Vendor', true, 'version', '6.0.2.0');
  xml.updateAttrAt('Body|Message|Body', true, 'xmlns:dt', 'urn:schemas-microsoft-com:datatypes');
  xml.updateAttrAt('Body|Message|Body', true, 'encrypted', 'yes');
  xml.updateAttrAt('Body|Message|Body', true, 'contentEncoding', 'gzip');
  xml.updateAttrAt('Body|Message|Body', true, 'dt:dt', 'bin.base64');

  // Insert the contents of bd here:
  xml.updateChildContent('Body|Message|Body', bd.getEncoded('base64'));

  // Show the XML to be sent to https://vrep1-t.cssz.cz/VREP/submission
  xml.emitCompact = false;
  print(xml.getXml());
  xml.emitCompact = true;

  // ----------------------------------------------------------
  // POST the XML to https://vrep1-t.cssz.cz/VREP/submission

  final http = CkHttp();
  final resp = CkHttpResponse();
  try {
    http.httpStr('POST', 'https://vrep1-t.cssz.cz/VREP/submission', xml.getXml(), 'utf-8', 'application/xml', resp);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Examine the response status code (200 = success)
  final statusCode = resp.statusCode;
  print('Response status code = $statusCode');

  // The response body should be XML.
  // Load it into a Chilkat XML object to get it in indented format for viewing..
  xml.clear();
  xml.loadXml(resp.bodyStr);
  xml.emitCompact = false;
  print(xml.getXml());

  // Output is:
  // <GovTalkMessage xmlns="http://www.govtalk.gov.uk/CM/envelope">
  //     <EnvelopeVersion>2.0</EnvelopeVersion>
  //     <Header>
  //         <MessageDetails>
  //             <Class>CSSZ_PVPOJ</Class>
  //             <Qualifier>acknowledgement</Qualifier>
  //             <Function>submit</Function>
  //             <TransactionID />
  //             <CorrelationID>1B6336D5ACE949CDB944424CB2D54401</CorrelationID>
  //             <ResponseEndPoint PollInterval="60">https://vrep1-t.cssz.cz/VREP/poll</ResponseEndPoint>
  //             <GatewayTimestamp>2018-07-02T22:23:41.310</GatewayTimestamp>
  //         </MessageDetails>
  //         <SenderDetails />
  //     </Header>
  //     <GovTalkDetails>
  //         <Keys />
  //     </GovTalkDetails>
  //     <Body>
  //         <Signature xmlns="http://www.podani.gov.cz/TxE/timestamp" Version="1.0">
  //             <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
  //             <TimeStamp>
  //                 <date>20180702</date>
  //                 <time>22:23:41</time>
  //             </TimeStamp>
  //             <SignatureValue>MIIORwYJKoZIhvcNAQcCo ... bBNE6MeXmk2siMuvY=</SignatureValue>
  //         </Signature>
  //     </Body>
  // </GovTalkMessage>
  // 

  // Hint: Use the online tool at http://tools.chilkat.io/xmlParse.cshtml
  // to generate XML parsing code based on a sample response..
}