Use web data sources in reports.
Reference → Modules → Reports → UI → Forms Editor | Forms | Monitor | WebData | WebData Editor
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: NoneToken-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: