Reports WebData (Reference) onfiguration objects facilitate data exchange between applications using JSON, XML, HTML, or text formats, enabling integration with web services and RESTful APIs. WebData objects provide:
WebData enables both consuming external APIs and exposing solution data to other systems.
Property | Description | Required |
---|---|---|
Name | Unique WebData identifier | Yes |
Encoding | Data format (JSON/XML/HTML/Text) | Yes |
DefaultURL | Default API endpoint | No |
Authorization | Authentication method | No |
Headers | Request/response metadata | No |
SaveFileName | Local file path for saving | No |
Padding | Whitespace handling | No |
EditSecurity | Permission groups | No |
Length | Data size in bytes | Auto |
Description | Documentation text | No |
No credentials sent:
Authorization: None
Token-based authentication:
Authorization: Bearer <token>
Headers: {"Authorization": "Bearer {{Tag.APIToken}}"}
Username/password authentication:
Authorization: Basic
Username: {{Tag.Username}}
Password: {{Tag.Password}}
Define custom authentication:
Headers: {
"X-API-Key": "{{Tag.APIKey}}",
"X-Client-ID": "{{Tag.ClientID}}"
}
Execute data retrieval:
csharp
// Async GET request
string response = await @Report.WebData.MyAPI.GetRequestAsync();
// Store in tag
@Tag.APIResponse = response;
// Access via DocumentClient
string data = @Report.WebData.MyAPI.DocumentClient;
Send data to API:
csharp
// Define body in WebData Editor
// Set response tag in headers
@Report.WebData.MyAPI.Headers["ResponseTag"] = "Tag.PostResult";
// Execute POST
await @Report.WebData.MyAPI.PostRequestAsync();
// Response stored in specified tag
string result = @Tag.PostResult;
Define request structure and bind tags:
json
{
"timestamp": "{{Info.Date}}",
"values": {
"temperature": {{Tag.TankFarm/Tank1/Temp}},
"pressure": {{Tag.TankFarm/Tank1/Pressure}},
"status": "{{Tag.Equipment/Status}}"
}
}
xml
<data>
<timestamp>{{Info.Date}}</timestamp>
<temperature>{{Tag.TankFarm/Tank1/Temp}}</temperature>
<pressure>{{Tag.TankFarm/Tank1/Pressure}}</pressure>
</data>
Method 1: Direct Assignment
csharp
@Tag.JSONResponse = await @Report.WebData.API.GetRequestAsync();
Method 2: DocumentClient Property
csharp
await @Report.WebData.API.GetRequestAsync();
string data = @Report.WebData.API.DocumentClient;
Method 3: Tag Binding in Editor Map response fields to tags in WebData Editor
Common headers:
json
{
"Content-Type": "application/json",
"Accept": "application/json",
"ResponseTag": "Tag.APIResult",
"X-Request-ID": "{{Tag.RequestID}}"
}
csharp
// Configure SaveFileName
@Report.WebData.API.SaveFileName = @"C:\Data\response.json";
// Execute and save
await @Report.WebData.API.GetRequestAsync();
@Report.WebData.API.Save();
C:\Data\API_{{Tag.Date}}_{{Tag.Time}}.json
Option | Effect | Use Case |
---|---|---|
Compact | No extra whitespace | Minimal payload |
PadRight | Space after values | Fixed-width format |
PadLeft | Space before values | Numeric alignment |
csharp
try
{
string response = await @Report.WebData.API.GetRequestAsync();
if (!string.IsNullOrEmpty(response))
{
@Tag.Status = "Success";
ProcessResponse(response);
}
}
catch (Exception ex)
{
@Tag.ErrorMessage = ex.Message;
@Tag.Status = "Failed";
}
csharp
@Report.WebData.Weather.DefaultURL =
"https://api.weather.com/v1/location/{{Tag.City}}";
string weather = await @Report.WebData.Weather.GetRequestAsync();
csharp
// Configure POST body with sensor data
@Report.WebData.IoT.Headers["ResponseTag"] = "Tag.UploadStatus";
await @Report.WebData.IoT.PostRequestAsync();
csharp
// Get external data
string data = await @Report.WebData.External.GetRequestAsync();
// Parse and update local database
UpdateDatabase(data);
Connection failed:
Invalid response:
Authentication errors:
Performance issues: