Changes for page Download a project (export)
Last modified by Nico Lemaire on 2025/09/01 13:36
From version 15.6
edited by Nico Lemaire
on 2025/09/01 13:36
on 2025/09/01 13:36
Change comment:
There is no comment for this version
To version 6.2
edited by Robert Jan Daams
on 2022/08/23 11:14
on 2022/08/23 11:14
Change comment:
There is no comment for this version
Summary
-
Page properties (4 modified, 0 added, 0 removed)
Details
- Page properties
-
- Title
-
... ... @@ -1,1 +1,1 @@ 1 - Downloadaproject(export)1 +Setting up a Webservice connection for project exports - Parent
-
... ... @@ -1,1 +1,1 @@ 1 -Implementation documentation. For customers.WebHome1 +Implementation documentation.WebHome - Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. NicoLemaire1 +XWiki.RjDaams - Content
-
... ... @@ -23,29 +23,12 @@ 23 23 As part of on-going efforts to improve performance and scalability, we have introduced a dedicated version of DataWS named DataWSExternals. This new service should be used for external API consumers. 24 24 25 25 | |**URL**| 26 -|**Old**|{{code language="none"}}https://web.terraindex.com/DataWS/{{/code}}| (((27 -[[https:~~/~~/web.terraindex.com/DataWS/ITW DataRestService_V1_0/GetProjectsJSON>>https://web.terraindex.com/DataWS/ITWDataRestService_V1_0/GetProjectsJSON]]26 +|**Old**|{{code language="none"}}https://web.terraindex.com/DataWS/{{/code}}|[[https:~~/~~/web.terraindex.com/DataWS/ITWImportExportServiceASMX_V1_0.asmx?wsdl>>https://web.terraindex.com/DataWS/ITWImportExportServiceASMX_V1_0.asmx?wsdl]] 27 +|**New**|{{code language="none"}}https://web.terraindex.com/DataWSExternals/{{/code}}|[[https:~~/~~/web.terraindex.com/DataWSExternals/ITWImportExportServiceASMX_V1_0.asmx?wsdl>>https://web.terraindex.com/DataWSExternals/ITWImportExportServiceASMX_V1_0.asmx?wsdl]] 28 28 29 -[[https:~~/~~/web.terraindex.com/DataWS/ITWImportExportServiceASMX_V1_0.asmx>>https://web.terraindex.com/DataWSExternals/ITWImportExportServiceASMX_V1_0.asmx]] 30 -))) 31 -|**New**|{{code language="none"}}https://web.terraindex.com/DataWSExternals/{{/code}}|((( 32 -[[https:~~/~~/web.terraindex.com/DataWSExternals/ITWDataRestService_V1_0/GetProjectsJSON>>https://web.terraindex.com/DataWSExternals/ITWDataRestService_V1_0/GetProjectsJSON]] 33 - 34 -[[https:~~/~~/web.terraindex.com/DataWSExternals/ITWImportExportServiceASMX_V1_0.asmx>>https://web.terraindex.com/DataWSExternals/ITWImportExportServiceASMX_V1_0.asmx?wsdl]] 35 -))) 36 - 29 +(% class="wikigeneratedid" %) 37 37 == == 38 38 39 -{{info}} 40 -We also have new REST Calls, with the same Input Output formats: 41 -\\[[https:~~/~~/web.terraindex.com/datawsExternals/ITWImportExportRestService_V1_0/export>>https://web.terraindex.com/datawsExternals/ITWImportExportRestService_V1_0/export]] 42 - 43 -input as json: ExportRequest 44 -output as json: ExportResult 45 - 46 -as POST or GET 47 -{{/info}} 48 - 49 49 == 1. Retreive all changed project from TerraIndex == 50 50 51 51 To retreive all changed project from the TerraIndex database since a specific timestamp, there is a webservice call you can do. This will return all project rows that have changes since the timestamp you send within the request. ... ... @@ -52,7 +52,7 @@ 52 52 This way you only download projects that have changes, and it will not request project that are not needed, so it won’t keep our servers busy with exports that are not necessary. 53 53 54 54 To start connecting this webservice, you should use this URL: 55 -[[https:~~/~~/web.terraindex.com/DataWS Externals/ITWDataRestService_V1_0/GetProjectsJSON>>https://web.terraindex.com/DataWSExternals/ITWDataRestService_V1_0/GetProjectsJSON]]38 +[[https:~~/~~/web.terraindex.com/DataWS/ITWDataRestService_V1_0/GetProjectsJSON>>url:https://web.terraindex.com/DataWS/ITWDataRestService_V1_0/GetProjectsJSON]] 56 56 57 57 Fill the **Body **of a **POST **HTTP call with: 58 58 ... ... @@ -268,12 +268,11 @@ 268 268 == 2. Retreive the project export from TerraIndex == 269 269 270 270 To request the export from TerraIndex we have a SOAP webservice. This webservice is called the ExportService, and it will provide a full project in TerraIndex Format. 271 -The format of the projectfile is documentated here: [[Documentation TerraIndex Export format - dsFieldProject.xsd>>Implementation documentation. For customers.Documentation TerraIndex Export format - dsFieldProject\.xsd.WebHome]]254 +The format of the projectfile is documentated here: [[Documentation TerraIndex Export format - dsFieldProject.xsd>>Implementation documentation.Documentation TerraIndex Export format - dsFieldProject\.xsd.WebHome]] 272 272 273 -To start connecting this webservice, you should use this URL of the Import Export Webservice: 256 +To start connecting this webservice, you should use this URL of the Import Export Webservice: 257 +[[https:~~/~~/web.terraindex.com/DataWS/ITWImportExportServiceASMX_V1_0.asmx>>url:https://web.terraindex.com/DataWS/ITWImportExportServiceASMX_V1_0.asmx]] 274 274 275 -[[https:~~/~~/web.terraindex.com/DataWSExternals/ITWImportExportService_V1_0.svc>>https://web.terraindex.com/DataWSExternals/ITWImportExportService_V1_0.svc]] 276 - 277 277 With this URL many IDE’s can create a proxy for you, just by providing the URL. Once this proxy is created, you will have a few classes looking like the call in the image below. 278 278 279 279 [[image:image-20200108-123431.png]] ... ... @@ -287,8 +287,7 @@ 287 287 Also fill the license and the applicationCode. //(These two fields can be requested at the TerraIndex Servicedesk.)// 288 288 5; Fill the **ExportType **'**Export_FIELD_XML_v1_0_0**’. This export corresponds with dsFieldProject.xsd and is the best XML to connect TI with. 289 289 Create at least create 2 parameters as in the image. Beacause 2 parameters are needed. 290 -//If JSON is prevered use: ExportType = 'Export_FIELD_JSON_v1_0_0' 291 -For other export types, see the end of this page// 272 +//If JSON is prevered use: ExportType = 'Export_FIELD_JSON_v1_0_0'// 292 292 6; Fill the parameter with the FileName. 293 293 7; Fill the parameter with **projectID**. Instead of ‘ProjectID' it’s also possible to fill the parameter ‘ProjectCode'. 294 294 8; Send the request and wait for the reponse. In response field ‘ResultCode’ should be 'SUCCES’ when it all went OK. If not it will tell what went wrong. ... ... @@ -410,31 +410,139 @@ 410 410 {{/code}} 411 411 412 412 413 - **Listof exporttypes:**394 +== Zip Stream class == 414 414 415 -* Export_TI_v1_0_0 416 -* Export_FIELD_XML_v1_0_0 417 -* Export_FIELD_JSON_v1_0_0 418 -* Export_Field_Codelist_XML 419 -* Export_Field_Codelist_JSON 420 -* Export_OVAM_MISTRAL2_v8_4_0 421 -* Export_DOV 422 -* Export_IMSIKB_v14_3_0 423 -* Export_IMSIKB_v13_5_0 424 -* Export_BRO_GMW 425 -* Export_BRO_BHR_GT 426 -* Export_BRO_GAR 427 -* Export_IMSIKB_v14_7_0 428 -* Export_IMSIKB_v14_8_0 429 -* Export_BRO_SAD_IMBROA_Registration 430 -* Export_BRO_SAD_IMBROA_Correction 431 -* Export_BRO_SAD_IMBRO_Registration 432 -* Export_BRO_SAD_IMBRO_Correction 433 -* Export_IMSIKB_v14_9_0 434 -))) 396 +If needed, this is the Zip Stream class you can use to extract the zipstream as used above: 435 435 398 +{{code language="Csharp" layout="LINENUMBERS"}} 399 +/// <summary> 400 +/// Helper class for compress en decompress of file data 401 +/// </summary> 402 +public static class ZipStreamHelper { 403 + #region Compress and encode 404 + /// <summary> 405 + /// Comprimeer een string en geeft deze terug in Base64 string. 406 + /// </summary> 407 + /// <param name="content">filecontent</param> 408 + /// <returns>gecomprimeerde string</returns> 409 + public static string CompressToBase64String(string content) { 410 + //string to byte[] 411 + byte[] contentArray = stringToByteArray(content); 412 + // Compress 413 + byte[] compressed = Compress(contentArray); 414 + return base64_encode(compressed); 415 + } 436 436 417 + /// <summary> 418 + /// Zet een string om naar een ByteArray 419 + /// </summary> 420 + /// <param name="content">filecontent</param> 421 + /// <returns>ByteArray</returns> 422 + public static byte[] stringToByteArray(string content) { 423 + System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); 424 + return encoding.GetBytes(content); 425 + } 437 437 427 + /// <summary> 428 + /// comprimeer een ByteArray 429 + /// </summary> 430 + /// <param name="data">filedata als ByteArray</param> 431 + /// <returns>gecomprimeerde ByteArray</returns> 432 + public static byte[] Compress(byte[] data) { 433 + using(var compressedStream = new MemoryStream()) 434 + using(var zipStream = new GZipStream(compressedStream, CompressionMode.Compress)) { 435 + zipStream.Write(data, 0, data.Length); 436 + zipStream.Close(); 437 + return compressedStream.ToArray(); 438 + } 439 + } 440 + 441 + /// <summary> 442 + /// Zet een ByteArray om naar een Base64 string 443 + /// </summary> 444 + /// <param name="data">gecomprimeerde ByteArray</param> 445 + /// <returns>Base 64 string</returns> 446 + public static string base64_encode(byte[] data) { 447 + if (data == null) 448 + return string.Empty; 449 + return Convert.ToBase64String(data); 450 + } 451 + 452 + /// <summary> 453 + /// Zet een string om naar een Base64 string 454 + /// </summary> 455 + /// <param name="data">string</param> 456 + /// <returns>Base 64 string</returns> 457 + public static string string_base64_encode(string data) { 458 + if (string.IsNullOrEmpty(data)) 459 + return string.Empty; 460 + 461 + //string to byte[] 462 + byte[] contentArray = stringToByteArray(data); 463 + return base64_encode(contentArray); 464 + } 465 + #endregion 466 + 467 + #region Decompress and decode 468 + // Decode and decompress 469 + /// <summary> 470 + /// Decomprimeer een Base64 string naar een string 471 + /// </summary> 472 + /// <param name="contentBase64">GZIP Base64 string</param> 473 + /// <returns>string</returns> 474 + public static string DecompressBase64StringToString(string contentBase64) { 475 + // Decompress 476 + byte[] decoded = base64_decode(contentBase64); 477 + byte[] decompressed = Decompress(decoded); 478 + 479 + return byteArrayTostring(decompressed); 480 + } 481 + 482 + /// <summary> 483 + /// Zet een ByteArray om in een normale string 484 + /// </summary> 485 + /// <param name="data">ByteArray</param> 486 + /// <returns>string</returns> 487 + public static string byteArrayTostring(byte[] data) { 488 + System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding(); 489 + return enc.GetString(data); 490 + } 491 + 492 + /// <summary> 493 + /// Zet een Base64 string om naar een ByteArray 494 + /// </summary> 495 + /// <param name="encodedData">Base64 string</param> 496 + /// <returns>gecomprimeerde ByteArray</returns> 497 + public static byte[] base64_decode(string encodedData) { 498 + byte[] encodedDataAsBytes = Convert.FromBase64String(encodedData); 499 + return encodedDataAsBytes; 500 + } 501 + 502 + /// <summary> 503 + /// Zet een gecomprimeerde ByteArray om in een ByteArray 504 + /// </summary> 505 + /// <param name="data">gecomprimeerde ByteArray</param> 506 + /// <returns>ByteArray (gedecomprimeerd)</returns> 507 + public static byte[] Decompress(byte[] data) { 508 + using(var compressedStream = new MemoryStream(data)) 509 + using(var zipStream = new GZipStream(compressedStream, CompressionMode.Decompress)) 510 + using(var resultStream = new MemoryStream()) { 511 + var buffer = new byte[4096]; 512 + int read; 513 + 514 + while ((read = zipStream.Read(buffer, 0, buffer.Length)) > 0) { 515 + resultStream.Write(buffer, 0, read); 516 + } 517 + 518 + return resultStream.ToArray(); 519 + } 520 + } 521 + #endregion 522 +} 523 +{{/code}} 524 +))) 525 + 526 + 438 438 (% class="col-xs-12 col-sm-4" %) 439 439 ((( 440 440