Response Callback

ResponseCB

Asynchronous Functions - C

Called at the end of a conversation.

WEB_ASYNC_CB_RC_ENUM <function name>( IN const char * aResponseHeadersStr,IN int aResponseHeadersLen,IN const char *aResponseBodyStr, IN int aResponseBodyLen, IN int aHttpStatusCode );

Argument Description
aResponseHeadersStr

A pointer to one of:

  • A non-empty string containing the accumulated response headers of the last conversation task, if it received a response.
  • An empty string if the last conversation task has not received a response.
aResponseHeadersLen

The length of the string pointed to by aResponseHeadersStr.

aResponseBodyStr

A pointer to one of:

  • A string containing the accumulated response body of the last conversation task. The data can contain NULL bytes (\0) and may be empty.
  • An empty string if the last conversation task has not received a response.
aResponseBodyLenThe length of the string pointed to by aResponseBodyStr.
aHttpStatusCodeThe HTTP status return code.

Return Values

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

Parameterization

Standard parameterization is not available for this function.

General Information

A response callback is a user-created function. It is invoked once at the end of a conversation. If the last request within the group received a response, the accumulated response headers and the accumulated response body are passed to the callback. Informational response headers (status codes 1xx) are ignored.

If the last 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. did not receive any response, empty strings are passed for accumulated headers and accumulated body.

The response data is processed as follows before being passed to the callback:

  • If "Transfer-Encoding: chunked" was specified for the response, any overhead bytes are removed.
  • If the response was compressed, it is decompressed. This can leave remainders of data to be handled when more data arrive.
  • If required, any decompression remainders from a previous segment are joined to the data of the current segment.
  • If required, data is converted to the locale charset.

This callback can invoke the utility function Request Callback and 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;
}