procedure TForm1.Button1Click(Sender: TObject);
var
http: HCkHttp;
success: Boolean;
sbSignedXml: HCkStringBuilder;
json: HCkJsonObject;
resp: HCkHttpResponse;
sbResponseBody: HCkStringBuilder;
jResp: HCkJsonObject;
respStatusCode: Integer;
errorCode: PWideChar;
errorDescription: PWideChar;
requestID: PWideChar;
begin
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
http := CkHttp_Create();
// Implements the following CURL command:
// curl -X POST https://auth.fatturazioneelettronica.aruba.it/services/ClientRequest/CreateTransmissionRequest \
// -H "Accept: application/json" \
// -H "Content-Type: application/json;charset=UTF-8" \
// -d '{
// "userName" : "ARUBA0000",
// "password" : "ArubaPwd",
// "userID" : "ARUBA0000",
// "comunicationType" : "LI",
// "dataFile" : "dGVzdA=="
// }'
// Use the following online tool to generate HTTP code from a CURL command
// Convert a cURL Command to HTTP Source Code
// Use this online tool to generate code from sample JSON:
// Generate Code to Create JSON
// The following JSON is sent in the request body.
// {
// "userName": "ARUBA0000",
// "password": "ArubaPwd",
// "userID": "ARUBA0000",
// "comunicationType": "LI",
// "dataFile": "dGVzdA=="
// }
// The dataFile field must contain an xml document which conforms to the Revenue Agency specifications.
// The document must be Base64 codified and contain a CADES-based electronic signature.
sbSignedXml := CkStringBuilder_Create();
success := CkStringBuilder_LoadFile(sbSignedXml,'IT01873080855_00310.xml','utf-8');
json := CkJsonObject_Create();
CkJsonObject_UpdateString(json,'userName','ARUBA0000');
CkJsonObject_UpdateString(json,'password','ArubaPwd');
CkJsonObject_UpdateString(json,'userID','ARUBA0000');
CkJsonObject_UpdateString(json,'comunicationType','LI');
CkJsonObject_UpdateString(json,'dataFile',CkStringBuilder__getEncoded(sbSignedXml,'base64','utf-8'));
CkHttp_SetRequestHeader(http,'Content-Type','application/json;charset=UTF-8');
CkHttp_SetRequestHeader(http,'Accept','application/json');
resp := CkHttp_PostJson3(http,'https://ws.fatturazioneelettronica.aruba.it/services/ClientRequest/CreateTransmissionRequest','application/json',json);
if (CkHttp_getLastMethodSuccess(http) = False) then
begin
Memo1.Lines.Add(CkHttp__lastErrorText(http));
Exit;
end;
sbResponseBody := CkStringBuilder_Create();
CkHttpResponse_GetBodySb(resp,sbResponseBody);
jResp := CkJsonObject_Create();
CkJsonObject_LoadSb(jResp,sbResponseBody);
CkJsonObject_putEmitCompact(jResp,False);
Memo1.Lines.Add('Response Body:');
Memo1.Lines.Add(CkJsonObject__emit(jResp));
respStatusCode := CkHttpResponse_getStatusCode(resp);
Memo1.Lines.Add('Response Status Code = ' + IntToStr(respStatusCode));
if (respStatusCode >= 400) then
begin
Memo1.Lines.Add('Response Header:');
Memo1.Lines.Add(CkHttpResponse__header(resp));
Memo1.Lines.Add('Failed.');
CkHttpResponse_Dispose(resp);
Exit;
end;
CkHttpResponse_Dispose(resp);
// Sample JSON response:
// (Sample code for parsing the JSON response is shown below)
// {
// "errorCode": "",
// "errorDescription": "",
// "requestID": "UICBY9QDLUOXQ72U"
// }
// Sample code for parsing the JSON response...
// Use the following online tool to generate parsing code from sample JSON:
// Generate Parsing Code from JSON
errorCode := CkJsonObject__stringOf(jResp,'errorCode');
errorDescription := CkJsonObject__stringOf(jResp,'errorDescription');
requestID := CkJsonObject__stringOf(jResp,'requestID');
CkHttp_Dispose(http);
CkStringBuilder_Dispose(sbSignedXml);
CkJsonObject_Dispose(json);
CkStringBuilder_Dispose(sbResponseBody);
CkJsonObject_Dispose(jResp);
end;