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:
- RESTful API integration
- Multiple data format support
- Authentication handling
- Dynamic tag binding
- Request/response management
- File save capabilities
WebData enables both consuming external APIs and exposing solution data to other systems.
In this page:
Configuration Properties
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 |
Creating WebData Objects
- Navigate to Reports → WebData
- Click Add button
- Configure minimum requirements:
- Name: Unique identifier
- Encoding: Select format
- Optional: Set DefaultURL and Authorization
- Click OK
Authentication Methods
No Auth
No credentials sent:
Authorization: None
Bearer Token
Token-based authentication:
Authorization: Bearer <token>
Headers: {"Authorization": "Bearer {{Tag.APIToken}}"}
Basic Auth
Username/password authentication:
Authorization: Basic
Username: {{Tag.Username}}
Password: {{Tag.Password}}
Custom
Define custom authentication:
Headers: {
"X-API-Key": "{{Tag.APIKey}}",
"X-Client-ID": "{{Tag.ClientID}}"
}
Request Methods
GET Requests
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;
POST Requests
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;
WebData Editor
Define request structure and bind tags:
JSON Format
json
{
"timestamp": "{{Info.Date}}",
"values": {
"temperature": {{Tag.TankFarm/Tank1/Temp}},
"pressure": {{Tag.TankFarm/Tank1/Pressure}},
"status": "{{Tag.Equipment/Status}}"
}
}
XML Format
xml
<data>
<timestamp>{{Info.Date}}</timestamp>
<temperature>{{Tag.TankFarm/Tank1/Temp}}</temperature>
<pressure>{{Tag.TankFarm/Tank1/Pressure}}</pressure>
</data>
Response Handling
Store Response Methods
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
Headers Configuration
Common headers:
json
{
"Content-Type": "application/json",
"Accept": "application/json",
"ResponseTag": "Tag.APIResult",
"X-Request-ID": "{{Tag.RequestID}}"
}
File Operations
Save Response to File
csharp
// Configure SaveFileName
@Report.WebData.API.SaveFileName = @"C:\Data\response.json";
// Execute and save
await @Report.WebData.API.GetRequestAsync();
@Report.WebData.API.Save();
Dynamic File Names
C:\Data\API_{{Tag.Date}}_{{Tag.Time}}.json
Padding Options
Option | Effect | Use Case |
---|---|---|
Compact | No extra whitespace | Minimal payload |
PadRight | Space after values | Fixed-width format |
PadLeft | Space before values | Numeric alignment |
Error Handling
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";
}
Common Use Cases
Weather API Integration
csharp
@Report.WebData.Weather.DefaultURL =
"https://api.weather.com/v1/location/{{Tag.City}}";
string weather = await @Report.WebData.Weather.GetRequestAsync();
IoT Data Upload
csharp
// Configure POST body with sensor data
@Report.WebData.IoT.Headers["ResponseTag"] = "Tag.UploadStatus";
await @Report.WebData.IoT.PostRequestAsync();
Database Sync
csharp
// Get external data
string data = await @Report.WebData.External.GetRequestAsync();
// Parse and update local database
UpdateDatabase(data);
Best Practices Checklist
- Validate URLs - Check endpoints before deployment
- Secure credentials - Use tags for sensitive data
- Handle timeouts - Implement retry logic
- Parse responses - Validate JSON/XML structure
- Log errors - Track failed requests
- Test thoroughly - Verify all scenarios
- Document APIs - Clear descriptions
Troubleshooting
Connection failed:
- Verify URL accessibility
- Check network/firewall
- Confirm authentication
- Review proxy settings
Invalid response:
- Check encoding format
- Validate JSON/XML syntax
- Verify content-type header
- Review API documentation
Authentication errors:
- Confirm credentials
- Check token expiration
- Verify header format
- Review API permissions
Performance issues:
- Implement caching
- Reduce request frequency
- Optimize payload size
- Use async methods
In this section...