⚠️ This documentation corresponds to the latest development branch of axmol. It might diverge from the official releases.

Axmol Engine 3.0.0-dff292a
Loading...
Searching...
No Matches
HttpRequest Class Reference

Defines the object which users must packed for HttpClient::send(HttpRequest*) method. More...

#include <HttpRequest.h>

Public Types

enum class  Type
 The HttpRequest type enum used in the HttpRequest::setRequestType.

Public Member Functions

 HttpRequest ()
 Constructor.
virtual ~HttpRequest ()
 Destructor.
Objectautorelease ()
 Override autorelease method to avoid developers to call it.
void setRequestType (Type type)
 Set request type of HttpRequest object before being sent,now it support the enum value of HttpRequest::Type.
Type getRequestType () const
 Get the request type of HttpRequest object.
void setUrl (std::string_view url)
 Set the url address of HttpRequest object.
std::string_view getUrl () const
 Get the url address of HttpRequest object.
void setRequestData (const char *buffer, size_t len)
 Set the request data of HttpRequest object.
char * getRequestData ()
 Get the request data pointer of HttpRequest object.
ssize_t getRequestDataSize () const
 Get the size of request data.
void setTag (std::string_view tag)
 Set a string tag to identify your request.
std::string_view getTag () const
 Get the string tag to identify the request.
void setUserData (void *pUserData)
 Set user-customed data of HttpRequest object.
void * getUserData () const
 Get the user-customed data pointer which were pre-setted.
void setCompleteCallback (const HttpCompleteCallback &callback)
 Set response callback function of HttpRequest object.
const HttpCompleteCallback & getCompleteCallback () const
 Get HttpCompleteCallback callback function.
void setDataCallback (const HttpDataCallback &callback)
 Set the data callback for handling received data chunks.
void setHeaders (const std::vector< std::string > &headers)
 Set custom-defined headers.
const std::vector< std::string > & getHeaders () const
 Get custom headers.

Detailed Description

Defines the object which users must packed for HttpClient::send(HttpRequest*) method.

Please refer to tests/test-cpp/Classes/ExtensionTest/NetworkTest/HttpClientTest.cpp as a sample

Since
v2.0.2

@lua NA

Constructor & Destructor Documentation

◆ HttpRequest()

HttpRequest ( )
inline

Constructor.

Because HttpRequest object will be used between UI thread and network thread, requestObj->autorelease() is forbidden to avoid crashes in AutoreleasePool new/retain/release still works, which means you need to release it manually Please refer to HttpRequestTest.cpp to find its usage.

Member Function Documentation

◆ autorelease()

Object * autorelease ( )
inline

Override autorelease method to avoid developers to call it.

If this function was called, it would trigger assert in debug mode

Returns
Object* always return nullptr.

◆ setRequestType()

void setRequestType ( Type type)
inline

Set request type of HttpRequest object before being sent,now it support the enum value of HttpRequest::Type.

Parameters
typethe request type.

◆ getRequestType()

Type getRequestType ( ) const
inline

Get the request type of HttpRequest object.

Returns
HttpRequest::Type.

◆ setUrl()

void setUrl ( std::string_view url)
inline

Set the url address of HttpRequest object.

The url value could be like these: "http://httpbin.org/ip" or "https://httpbin.org/get"

Parameters
urlthe string object.

◆ getUrl()

std::string_view getUrl ( ) const
inline

Get the url address of HttpRequest object.

Returns
const char* the pointer of _url.

◆ setRequestData()

void setRequestData ( const char * buffer,
size_t len )
inline

Set the request data of HttpRequest object.

Parameters
bufferthe buffer of request data, it support binary data.
lenthe size of request data.

◆ getRequestData()

char * getRequestData ( )
inline

Get the request data pointer of HttpRequest object.

Returns
char* the request data pointer.

◆ getRequestDataSize()

ssize_t getRequestDataSize ( ) const
inline

Get the size of request data.

Returns
ssize_t the size of request data

◆ setTag()

void setTag ( std::string_view tag)
inline

Set a string tag to identify your request.

This tag can be found in HttpResponse->getHttpRequest->getTag().

Parameters
tagthe string object.

◆ getTag()

std::string_view getTag ( ) const
inline

Get the string tag to identify the request.

The best practice is to use it in your MyClass::onMyHttpRequestCompleted(sender, HttpResponse*) callback.

Returns
const char* the pointer of _tag

◆ setUserData()

void setUserData ( void * pUserData)
inline

Set user-customed data of HttpRequest object.

You can attach a customed data in each request, and get it back in response callback. But you need to new/delete the data pointer manually.

Parameters
pUserDatathe string pointer

◆ getUserData()

void * getUserData ( ) const
inline

Get the user-customed data pointer which were pre-setted.

Don't forget to delete it. HttpClient/HttpResponse/HttpRequest will do nothing with this pointer.

Returns
void* the pointer of user-customed data.

◆ setCompleteCallback()

void setCompleteCallback ( const HttpCompleteCallback & callback)
inline

Set response callback function of HttpRequest object.

When response come back, we would call _pCallback to process response data.

Parameters
callbackthe HttpCompleteCallback function.

◆ getCompleteCallback()

const HttpCompleteCallback & getCompleteCallback ( ) const
inline

Get HttpCompleteCallback callback function.

Returns
const HttpCompleteCallback& completeCallback callback function.

◆ setDataCallback()

void setDataCallback ( const HttpDataCallback & callback)
inline

Set the data callback for handling received data chunks.

When a data callback is set, it will be invoked for each chunk of data received during the HTTP response. This is particularly useful for:

  • Large file downloads to process data incrementally
  • Streaming data processing
  • Memory-constrained environments
Note
If a data callback is set, the default behavior of appending received data to HttpResponse::_responseData will be disabled. The response data buffer will not accumulate data chunks automatically. You must handle all data storage/processing within the callback function.
The callback receives the following parameters:
  • HttpResponse* response: The response object containing request context
  • const char* data: Pointer to the received data chunk
  • size_t data_size: Size of the data chunk in bytes
Parameters
callbackThe callback function to handle received data chunks
// Example: Stream data to file instead of memory
request->setDataCallback([](HttpResponse* response, const char* data, size_t size) {
// 0 for chunked transfer encoding, unknown size, or no Content-Length header
auto expectedTotal = response->getContentLength();
// Write directly to file, avoiding memory accumulation
fwrite(data, 1, size, outputFile);
// Update progress
totalReceived += size;
updateProgress(totalReceived, expectedTotal);
});
defines the object which users will receive at onHttpCompleted(sender, HttpResponse) callback.
Definition HttpResponse.h:55
See also
HttpDataCallback
HttpResponse::_responseData

◆ setHeaders()

void setHeaders ( const std::vector< std::string > & headers)
inline

Set custom-defined headers.

Parameters
headersThe string vector of custom-defined headers.

◆ getHeaders()

const std::vector< std::string > & getHeaders ( ) const
inline

Get custom headers.

Returns
std::vector<std::string> the string vector of custom-defined headers.

The documentation for this class was generated from the following file:
  • HttpRequest.h