Request Callback

RequestCB

Asynchronous Functions - C

Called before a request is sent.

WEB_ASYNC_CB_RC_ENUM <function name>(void);

Return Values

This function returns a value of WEB_ASYNC_CB_RC_ENUM. For details, see Asynchronous function return values.

General Information

A request callback is a user-created function. It is invoked once during the creation of each TaskClosed A web task consists of an HTTP request and any directly related HTTP responses and requests until the eventual HTTP response to the initial HTTP request. Redirections are not included in an RDR. within the ConversationClosed An Asynchronous Conversation is a series of related web tasks, including tasks caused by redirection. An Asynchronous Conversation starts with the request for the desired response, includes all the requests and responses that are caused by this request (authentication, redirection, and so on) and ends when the desired response is received or when the series of interactions is canceled.. The function is called before any network processing, for example, resolve DNS, connect, and so on.

Examples of the use of a task Initialization callback:

  • Modifying a request's URL
  • Modifying a request's request body.

An example of where these modifications may be required is repetitive Asynchronous Conversation Patterns where each request should have a different index or timestamp. See Asynchronous Conversation PatternClosed A Pattern consists of one or more web tasks, issued and responded-to according to a predefined pattern, such as push, poll, or long poll. A Repetitive Pattern consists of more than one Conversation. For example, polling.

This callback can invoke these web utility functions:

C Language

Java Language

It can also call any of the general utility functions. See Utility Functions: C Language (lr_) or Utility Functions: JavaScript Language (lr.).

Example

The following example illustrates an asynchronous conversation.
/* Added by Async CodeGen.
ID = Push_0
ScanType = Recording

The following URLs are considered part of this conversation:
	http://push.myStream.com/myStream/STREAMING_IN_PROGRESS?LS_session=123456789ABCDE&LS_phase=2903&LS_domain=myStream.com&

TODO - The following callbacks have been added to AsyncCallbacks.c.
Add your code to the callback implementations as necessary.
	Push_0_RequestCB
	Push_0_ResponseBodyBufferCB
	Push_0_ResponseHeadersCB
	Push_0_ResponseCB
 */
	web_reg_async_attributes("ID=Push_0",
		"Pattern=Push",
		"URL=http://push.myStream.com/myStream/STREAMING_IN_PROGRESS?LS_session=123456789ABCDE&LS_phase=2903&LS_domain=myStream.com&",
		"RequestCB=Push_0_RequestCB",
		"ResponseHeadersCB=Push_0_ResponseHeadersCB",
		"ResponseBodyBufferCB=Push_0_ResponseBodyBufferCB",
		"ResponseCB=Push_0_ResponseCB",
		LAST);

/* Added by Async CodeGen.
ID = Push_0
 */
	web_stop_async("ID=Push_0",
		LAST);

//Automatically generated file for implementing async callback functions.
//You may modify the added callback implementations or add new ones.
//Async callback functions may be registered in web_reg_async_attributes steps.
int Push_0_RequestCB()
{
	//enter your implementation for RequestCB() here

	//call web_util_request_set_url() here to modify request url:
	web_util_set_request_url("<request url>");

	//call web_util_set_request_body() here to modify request body:
	web_util_set_request_body("<request body>");
	//call web_util_set_request_header() here to set request header:
	web_util_set_request_header("<header_name>", "<header_value>");

	return WEB_ASYNC_CB_RC_OK;
}

int Push_0_ResponseHeadersCB(
	int		aHttpStatusCode,
	const char *	aAccumulatedHeadersStr,
	int		aAccumulatedHeadersLen)
{
	//Enter your implementation for ResponseHeadersCB() here.

	return WEB_ASYNC_CB_RC_OK;
}

int Push_0_ResponseBodyBufferCB(
	const char *    aLastBufferStr,
	int             aLastBufferLen,
	const char *    aAccumulatedStr,
	int             aHttpStatusCode)
{
	//enter your implementation for ResponseBodyBufferCB() here

	return WEB_ASYNC_CB_RC_OK;
}

int Push_0_ResponseCB(
	const char *    aResponseHeadersStr,
	int             aResponseHeadersLen,
	const char *    aResponseBodyStr,
	int             aResponseBodyLen,
	int             aHttpStatusCode)
{
	//enter your implementation for ResponseCB() here

	return WEB_ASYNC_CB_RC_OK;
}