A dynamic web-service call to custom URL. Uses proxy settings defined in application variables PROXY and PROXYBYPASSLOCAL to make the request.
There's a tutorial.
The batch mode is designed to make multiple web service calls. Either enqueue all calls in the "Get Requests" SQL call, or add them in the "Store Response" SQL call.
Possible value | Description |
---|---|
AccountName | Account name of credentials with type "Account". |
Password | Password of credentials with type "Account". |
Base64 | A base64-encoded string containing <AccountName>:<Password> of credentials with type "Account". |
Secret | Secret of credentials with type "Secret". |
Marker that indicates that all columns with a higher ordinal than this column will be passed as parameters to the procedure in the subsequent calls belonging to the same RequestId. This column must only contain NULL.
Values in columns to the right of the BeginExtraParams column are passed as parameters to the procedure for the calls created by the command.
The call is only made if there is a UrlSuffix set in the meta data.
The call is only made if there are headers in the meta data.
Get the data to send to the receiver. This is only called when the method does not use raw input. Otherwise the Get raw data call is used instead.
Get the data to send to the receiver. This is only called when the method uses raw requests. Otherwise the Get data call is used instead.
Prior to this call data will be stored in the staging tables. This is only called when the method does not use raw output. Otherwise the Store raw response call is used instead.
Marker that indicates that all columns with a higher ordinal than this column will be passed as parameters to the procedure in the subsequent calls belonging to the same RequestId. This column must only contain NULL.
Values in columns to the right of the BeginExtraParams column are passed as parameters to the procedure for the calls created by the command.
Store the data recieved from the call. This is only called when the method uses raw responses. Otherwise the Store data call is used instead. The temporary tables #Content and #HttpHeader will be passed to the procedure.
Marker that indicates that all columns with a higher ordinal than this column will be passed as parameters to the procedure in the subsequent calls belonging to the same RequestId. This column must only contain NULL.
Values in columns to the right of the BeginExtraParams column are passed as parameters to the procedure for the calls created by the command.
Displays a user friendly error message to the user. This blocks any forwarding for the user.
Displays a user friendly confirmation message to the user with a delete button as the confirm button. If the user chooses OK the SQL call will be rerun with the parameter @ButtonAction set to 'Delete'.
Displays a user friendly confirmation message to the user with a question style. If the user chooses OK the SQL call will be rerun with the parameter @ButtonAction set to 'Confirm'.
Displays a user friendly confirmation message to the user with a warning style. If the user chooses OK the SQL call will be rerun with the parameter @ButtonAction set to 'Confirm'.
Displays a user friendly info message to the user. When the user clicks OK the user is forwarded.
Displays a user friendly success message to the user. When the user clicks OK the user is forwarded.
The dialog alias of a predefined dialog to show the user. Must be the first column in the result set table. Use multiple result set tables to combine with other forwarding.
Use the menu item "Admin > Dialogs" to register new dialogs or find aliases for existing ones.
Any column without special meaning in the result set with the first column ADMIN_Dialog will be used to make replacements of placeholders in the message and title text.
Additional information to show the developer when using ADMIN_Dialog.
Deprecated. Use ADMIN_CancelMenuItem instead.
Id of the menuitem to execute if the user clicks Cancel in an ADMIN_FORCE dialog (the default being none). This value overrides cancelmenuitemid specified in the query string.
Alias of the menu group to show after execution (instead of former menu item). This value overrides any destination specified by the query string.
Deprecated. Use ADMIN_ForwardMenuGroup instead.
Id of the menu group to show after execution (instead of former menu item). This value overrides any destination specified by the query string.
Deprecated. Use ADMIN_ForwardMenuItem instead.
Id of the menu item to execute after execution (instead of former menu item). This value overrides any destination specified by the query string.
Displays a user friendly error message to the user.
If this column is anything but NULL the popup will be closed and the parent will be reloaded. Only select this column if the menu item is opened in a popup. Avoid using this feature if the opener is a newEdit as that may interrupt the user's ongoing input.
Changes the text of the Cancel button when used with ADMIN_Force, ADMIN_ConfirmWarning, ADMIN_ConfirmQuestion, ADMIN_ConfirmDelete.
Changes the text of the OK button when used with ADMIN_ErrorMessage, ADMIN_ConfirmWarning, ADMIN_ConfirmQuestion, ADMIN_ConfirmDelete, ADMIN_InfoMessage, ADMIN_SuccessMessage, ADMIN_Message, ADMIN_Force, or ADMIN_Forward. ADMIN_Force,
Allows you to validate the SQL parameters before any other SQL is run in the component. This call is only made if the SQL is a stored procedure and Validate parameters is checked.
Use this call to restrict which entries a user is allowed to view and edit, and to log which entries a user views.
Access to a menu item is normally controlled through functions and roles alone but some entities need more fine grained control. For example, a user may have access to the View Member menu item for normal members but not for members with a protected identity.
The menu items a user visits are always logged (in ADMINLogMenuItem) but for sensitive data you may need to log exactly what entries are viewed. Do the logging in this call as the common ways of viewing data (grid and InfoSQL) are not allowed to modify the database.
If you bind a scalar function instead of a stored procedure to this call then its name must end with '_GrantAccess'.
CREATE PROCEDURE [dbo].[WebServiceCall]
@Action nvarchar(max) = NULL,
@RequestId int = NULL,
@BatchId nvarchar(max) = NULL,
@ResponseEntityStagingId int = NULL,
@RequestXml nvarchar(max) = NULL,
@ResponseXml nvarchar(max) = NULL,
@ErrorMessage nvarchar(max) = NULL
AS
BEGIN
IF @Action = 'GetRequests'
BEGIN
SELECT
NEWID() AS BatchId;
SELECT
'MyMethod' AS MethodName,
CallQueueId AS RequestId
FROM
dbo.CallQueue;
RETURN;
END;
IF @Action = 'GetUrlData'
BEGIN
SELECT
DataValue AS UrlParameter
FROM
dbo.Data;
RETURN;
END;
IF @Action = 'GetData'
BEGIN
SELECT
DataId,
DataValue
FROM
dbo.Data;
SELECT
DataRowId,
DataId,
DataRowValue
FROM
dbo.DataRow;
RETURN;
END;
IF @Action = 'StoreError'
BEGIN
-- Depending on your situation
SELECT
@ErrorMessage = CONCAT('Error in procedure: ' + OBJECT_NAME(@@PROCID), @ErrorMessage);
-- INSERT INTO LogTable (and possibly display error in Finished call)
EXEC SoftadminApi.Log_LogError
@LogMessage = @ErrorMessage;
RETURN;
END;
IF @Action = 'StoreResponse'
BEGIN
DECLARE
@ResponseValue int;
SELECT
@ResponseValue = ResponseValue
FROM
ResponseEntityStaging
WHERE
ResponseEntityStagingId = @ResponseEntityStagingId;
EXEC dbo.InsertResponse
@ResponseValue = @ResponseValue;
-- Example: Cancel remaining requests if the response is incorrect
IF @ResponseValue = -1
BEGIN
SELECT
1 AS [ClearQueue];
END;
RETURN;
END;
IF @Action = 'Finished'
BEGIN
SELECT
1 AS ADMIN_ForwardMenuitemId,
@BatchId AS BatchId;
RETURN;
END;
END;
CREATE PROCEDURE [dbo].[WebServiceCall]
@Action nvarchar(max) = NULL,
@RequestId int = NULL,
@BatchId nvarchar(max) = NULL,
@RequestXml nvarchar(max) = NULL,
@ResponseXml nvarchar(max) = NULL,
@ErrorMessage nvarchar(max) = NULL
AS
BEGIN
IF @Action = 'GetRequests'
BEGIN
SELECT
'MyMethod' AS MethodName,
1 AS RequestId;
RETURN;
END;
IF @Action = 'GetUrlData'
BEGIN
RETURN;
END;
IF @Action = 'GetData'
BEGIN
RETURN;
END;
IF @Action = 'StoreError'
BEGIN
SELECT
@ErrorMessage = CONCAT('Error in procedure: ' + OBJECT_NAME(@@PROCID), @ErrorMessage);
EXEC SoftadminApi.Log_LogError
@LogMessage = @ErrorMessage;
RETURN;
END;
IF @Action = 'StoreResponse'
BEGIN
RETURN;
END;
IF @Action = 'Finished'
BEGIN
RETURN;
END;
END;
CREATE PROCEDURE [dbo].[WebServiceCallRaw]
@Action nvarchar(max) = NULL,
@RequestId int = NULL,
@BatchId nvarchar(max) = NULL,
@RequestXml nvarchar(max) = NULL,
@ResponseXml nvarchar(max) = NULL,
@ErrorMessage nvarchar(max) = NULL,
@HttpStatusCode int = NULL
AS
BEGIN
IF @Action = 'GetRequests'
BEGIN
SELECT
'MyMethod' AS MethodName,
1 AS RequestId;
RETURN;
END;
IF @Action = 'GetUrlData'
BEGIN
RETURN;
END;
IF @Action = 'GetRawData'
BEGIN
SELECT
'MyHeader' AS HttpHeaderName,
'MyValue' AS HttpHeaderValue;
SELECT
'application/json' AS ContentType,
'{ "FirstName": "Adam" }' AS TextContent;
RETURN;
END;
IF @Action = 'StoreError'
BEGIN
SELECT
@ErrorMessage = CONCAT('Error in procedure: ' + OBJECT_NAME(@@PROCID), @ErrorMessage);
EXEC SoftadminApi.Log_LogError
@LogMessage = @ErrorMessage;
RETURN;
END;
IF @Action = 'StoreRawResponse'
BEGIN
DECLARE @ResponseText nvarchar(max);
IF (SELECT COUNT(*) FROM #Content) > 1
BEGIN
RAISERROR('Unexpected multipart reponse.', 16, 1);
END;
SELECT
@ResponseText = TextContent
FROM
#Content;
IF @HttpStatusCode = 200
BEGIN
EXEC dbo.StoreResponse
@ResponseText = @ResponseText;
END;
ELSE
BEGIN
SELECT
@ErrorMessage = CONCAT('WebServiceCall did not return an expected status code. Status code was ', @HttpStatusCode, '. ', @ResponseText);
EXEC SoftadminApi.Log_LogError
@LogMessage = @ErrorMessage;
END;
RETURN;
END;
IF @Action = 'Finished'
BEGIN
RETURN;
END;
END;