Tài liệu Steamworks
Interface ISteamHTTP
Một client HTTP nhỏ và dễ sử dụng để gửi và nhận dữ liệu từ web.

Hàm con

Hàm con (member function) cho ISteamHTTP được gọi qua hàm accessor dạng global SteamHTTP().

CreateCookieContainer

HTTPCookieContainerHandle CreateCookieContainer( bool bAllowResponsesToModify );
TênLoạiMô tả
bAllowResponsesToModifyboolQuyết định xem máy chủ có thể thiết lập cookie trong hộp chứa này hay không.

Tạo hộp chứa cookie để lưu trữ cookie trong suốt thời gian tồn tại của process.

API này chỉ dùng trong thời gian tồn tại của process, sau khi Steam khởi động lại, không có cookie nào được lưu giữ và bạn không có cách nào truy cập vào hộp chứa cookie khi chạy đi chạy lại process.

Nếu bAllowResponsesToModifytrue thì bất kỳ phản hồi nào cho yêu cầu của bạn có dùng hộp chứa cookie này đều có thể thêm cookie mới vào hộp chứa, rồi dùng để gửi cùng yêu cầu trong tương lai. Còn không, nếu là false thì chỉ cookie do bạn thiết lập cụ thể mới được gửi.

Bạn có thể liên kết hộp chứa cookie với yêu cầu http bằng cách dùng SetHTTPRequestCookieContainer, và có thể thiết lập cookie bằng SetCookie.

Đừng quên giải phóng hộp chứa khi dùng xong để tránh rò rỉ bộ nhớ bằng cách gọi ReleaseCookieContainer!

Trả về: HTTPCookieContainerHandle
Trả về handle hộp chứa cookie mới để dùng với lệnh gọi trong tương lai tới các hàm SteamHTTP.

CreateHTTPRequest

HTTPRequestHandle CreateHTTPRequest( EHTTPMethod eHTTPRequestMethod, const char *pchAbsoluteURL );
TênLoạiMô tả
eHTTPRequestMethodEHTTPMethodLoại yêu cầu để thực hiện với yêu cầu này.
pchAbsoluteURLconst char *URL cần yêu cầu. Bắt đầu bằng "http://" hay "https://".

Khởi tạo yêu cầu HTTP mới.

Cần phương thức như GET hay POST và URL tuyệt đối cho yêu cầu. Cả http và https đều được hỗ trợ, nên chuỗi này phải bắt đầu bằng "http://" hoặc "https://", nên trông như này "http://store.steampowered.com/app/10/" hoặc tương tự vậy. Lệnh gọi này trả về một handle mà bạn có thể dùng để thực hiện các lệnh gọi tiếp theo để thiết lập, sau đó gửi yêu cầu HTTP với SendHTTPRequest hoặc SendHTTPRequestAndStreamResponse.

Đừng quên giải phóng yêu cầu HTTP khi dùng xong để tránh rò rỉ bộ nhớ bằng cách gọi ReleaseHTTPRequest!

Trả về: HTTPRequestHandle
Trả về handle yêu cầu mới để dùng với lệnh gọi trong tương lai tới các hàm SteamHTTP. Trả về INVALID_HTTPREQUEST_HANDLE nếu pchAbsoluteURLNULL hoặc trống ("").

DeferHTTPRequest

bool DeferHTTPRequest( HTTPRequestHandle hRequest );
TênLoạiMô tả
hRequestHTTPRequestHandleHandle yêu cầu cần trì hoãn.

Trì hoãn yêu cầu đã gửi bằng cách chuyển về phía sau hàng đợi.

Trả về: bool
Trả về true nếu yêu cầu được trì hoãn thành công. Còn không, false nếu hRequest là handle không hợp lệ, hoặc nếu yêu cầu chưa được gửi.

Xem thêm: SendHTTPRequest, SendHTTPRequestAndStreamResponse

GetHTTPDownloadProgressPct

bool GetHTTPDownloadProgressPct( HTTPRequestHandle hRequest, float *pflPercentOut );
TênLoạiMô tả
hRequestHTTPRequestHandleHandle yêu cầu để lấy phần trăm tải về.
pflPercentOutfloat *Trả về phần trăm tải xuống nếu lệnh gọi thành công.

Lấy tiến độ tải xuống phần body của yêu cầu.

Giá trị sẽ bằng 0 trừ khi đã nhận được header của phản hồi bao gồm trường content-length. Phản hồi không chứa content-length sẽ báo cáo tiến độ là 0 trong quá trình gửi yêu cầu cho đến khi kết nối đóng lại, vì không thể xác định kích thước.

Trả về: bool
Trả về true khi thành công nếu phần trăm tải xuống được trả về thành công. Còn không, false nếu handle không hợp lệ hoặc pflPercentOutNULL.

GetHTTPRequestWasTimedOut

bool GetHTTPRequestWasTimedOut( HTTPRequestHandle hRequest, bool *pbWasTimedOut );
TênLoạiMô tả
hRequestHTTPRequestHandleHandle yêu cầu để kiểm tra lý do thất bại.
pbWasTimedOutbool *Trả về kết quả cho biết yêu cầu có bị quá hạn hay không.

Kiểm tra xem yêu cầu thất bại có phải là do quá hạn (thay vì một số lý khác nghiêm trọng hơn).

Bạn sẽ muốn gọi lệnh này trong phạm vi của HTTPRequestCompleted_t nếu m_bRequestSuccessfulfalse.

Trả về: bool
Trả về true khi chúng ta kiểm tra thành công.
Trả về false trong những trường hợp sau:
  • hRequest không hợp lệ.
  • Yêu cầu chưa được gửi hoặc chưa hoàn thành.

GetHTTPResponseBodyData

bool GetHTTPResponseBodyData( HTTPRequestHandle hRequest, uint8 *pBodyDataBuffer, uint32 unBufferSize );
TênLoạiMô tả
hRequestHTTPRequestHandleHandle yêu cầu để lấy dữ liệu body trong phản hồi.
pBodyDataBufferuint8 *Bộ nhớ đệm nơi dữ liệu sẽ được chép vào.
unBufferSizeuint32Đây nên là kích thước của pBodyDataBuffer tính bằng byte.

Lấy dữ liệu body từ phản hồi HTTP.

Phải được gọi sau khi yêu cầu HTTP đã hoàn thành và trả về phản hồi HTTP qua kết quả lệnh gọi HTTPRequestCompleted_t liên kết với handle yêu cầu. Trước tiên, bạn nên gọi GetHTTPResponseBodySize hoặc dùng biến m_unBodySize được cung cấp trong kết quả lệnh gọi, tiếp theo bạn có thể phân bổ bộ nhớ đệm có kích thước đó để truyền vào hàm này.

Chỉ áp dụng cho yêu cầu HTTP được gửi với SendHTTPRequest. Dùng GetHTTPStreamingResponseBodyData nếu bạn đang sử dụng yêu cầu HTTP truyền phát qua SendHTTPRequestAndStreamResponse.

Trả về: bool
Trả về true khi thành công cho biết dữ liệu body đã được lưu vào pBodyDataBuffer.
Còn không, trả về false trong những trường hợp sau:
  • hRequest không hợp lệ.
  • Yêu cầu chưa được gửi hoặc chưa hoàn thành.
  • Yêu cầu có dạng truyền phát.
  • pBodyDataBufferNULL.
  • unBufferSize không cùng kích thước được cung cấp bởi GetHTTPResponseBodySize.

GetHTTPResponseBodySize

bool GetHTTPResponseBodySize( HTTPRequestHandle hRequest, uint32 *unBodySize );
TênLoạiMô tả
hRequestHTTPRequestHandleHandle yêu cầu để lấy kích thước body trong phản hồi.
unBodySizeuint32 *Trả về kích thước body trong phản hồi.

Lấy kích thước của dữ liệu body từ phản hồi HTTP.

Phải được gọi sau khi yêu cầu HTTP đã hoàn thành và trả về phản hồi HTTP qua HTTPRequestCompleted_t hoặc HTTPRequestDataReceived_t liên kết với handle yêu cầu này. Nếu trả về thành công, thì bạn có thể phân bổ bộ nhớ đệm với kích thước được cung cấp để lưu dữ liệu nhận được từ GetHTTPResponseBodyData hoặc GetHTTPStreamingResponseBodyData.

Trả về: bool
Trả về true khi thành công cho biết kích thước đã được lưu vào unBodySize.
Còn không, trả về false trong những trường hợp sau:
  • hRequest không hợp lệ.
  • Yêu cầu chưa được gửi hoặc chưa hoàn thành.
  • unBodySizeNULL.

GetHTTPResponseHeaderSize

bool GetHTTPResponseHeaderSize( HTTPRequestHandle hRequest, const char *pchHeaderName, uint32 *unResponseHeaderSize );
TênLoạiMô tả
hRequestHTTPRequestHandleHandle yêu cầu để kiểm tra tên header trong phản hồi.
pchHeaderNameconst char *Tên header để kiểm tra.
unResponseHeaderSizeuint32 *Trả về kích thước của header trong phản hồi (nếu có).

Kiểm tra xem có header trong phản hồi HTTP không và trả về kích thước.

Phải được gọi sau khi yêu cầu HTTP đã hoàn thành và trả về phản hồi HTTP qua kết quả lệnh gọi HTTPRequestCompleted_t liên kết với handle yêu cầu này. Nếu phản hồi có chứa header thì bạn có thể phân bổ bộ nhớ đệm có kích thước chính xác để lấy giá trị liên kết bằng GetHTTPResponseHeaderValue.

Đây là danh sách tên header phản hồi tiêu chuẩn trên wikipedia.

Trả về: bool
Trả về true nếu tên header có trong phản hồi và unResponseHeaderSize đã được gán kích thước của giá trị header.
Còn không, trả về false và đặt unResponseHeaderSize thành 0 trong những trường hợp sau:
  • hRequest không hợp lệ.
  • Yêu cầu chưa được gửi hoặc chưa hoàn thành.
  • pchHeaderNameNULL.
  • unResponseHeaderSizeNULL.
  • Tên header không có trong phản hồi.

GetHTTPResponseHeaderValue

bool GetHTTPResponseHeaderValue( HTTPRequestHandle hRequest, const char *pchHeaderName, uint8 *pHeaderValueBuffer, uint32 unBufferSize );
TênLoạiMô tả
hRequestHTTPRequestHandleHandle yêu cầu để lấy dữ liệu header trong phản hồi.
pchHeaderNameconst char *Tên của header cần lấy giá trị.
pHeaderValueBufferuint8 *Bộ nhớ đệm nơi giá trị sẽ được chép vào.
unBufferSizeuint32Đây nên là kích thước của pHeaderValueBuffer tính bằng byte.

Lấy giá trị header từ phản hồi HTTP.

Phải được gọi sau khi yêu cầu HTTP đã hoàn thành và trả về phản hồi HTTP qua kết quả lệnh gọi HTTPRequestCompleted_t liên kết với handle yêu cầu này. Trước tiên, bạn nên gọi GetHTTPResponseHeaderSize để kiểm tra xem header có tồn tại không và lấy kích thước của header. Tiếp theo bạn có thể phân bổ bộ nhớ đệm có kích thước đó và truyền vào hàm này.

Đây là danh sách tên header phản hồi tiêu chuẩn trên wikipedia.

Trả về: bool
Trả về true khi thành công cho biết giá trị header đã được lưu vào pHeaderValueBuffer.
Còn không, trả về false trong những trường hợp sau:
  • hRequest không hợp lệ.
  • Yêu cầu chưa được gửi hoặc chưa hoàn thành.
  • pchHeaderNameNULL.
  • pHeaderValueBufferNULL.
  • Tên header không có trong phản hồi.
  • unBufferSize không đủ lớn để chứa giá trị.

GetHTTPStreamingResponseBodyData

bool GetHTTPStreamingResponseBodyData( HTTPRequestHandle hRequest, uint32 cOffset, uint8 *pBodyDataBuffer, uint32 unBufferSize );
TênLoạiMô tả
hRequestHTTPRequestHandleHandle yêu cầu để lấy dữ liệu body trong phản hồi.
cOffsetuint32Đây phải là giá trị lệch được cung cấp bởi HTTPRequestDataReceived_t.
pBodyDataBufferuint8 *Trả về dữ liệu bằng cách chép nó vào bộ nhớ đệm này.
unBufferSizeuint32Đây phải là kích thước được cung cấp bởi HTTPRequestDataReceived_t.

Lấy dữ liệu body từ phản hồi HTTP truyền phát.

Phải được gọi sau khi nhận dữ liệu từ yêu cầu HTTP truyền phát qua callback HTTPRequestDataReceived_t liên kết với handle yêu cầu này. Thông thường, bạn sẽ muốn phân bổ bộ nhớ đệm liên kết với handle yêu cầu bằng cách dùng trường phản hồi HTTP Content-Length để lấy tổng kích thước của dữ liệu khi nhận header qua HTTPRequestHeadersReceived_t. Sau đó, bạn có thể thêm dữ liệu vào bộ nhớ đệm đó khi nhận thêm dữ liệu.

Chỉ dành cho yêu cầu HTTP truyền phát được gửi với SendHTTPRequestAndStreamResponse. Dùng GetHTTPResponseBodyData nếu bạn dùng SendHTTPRequest.

Trả về: bool
Trả về true khi thành công cho biết dữ liệu body đã được lưu vào pBodyDataBuffer.
Còn không, trả về false trong những trường hợp sau:
  • hRequest không hợp lệ.
  • Yêu cầu chưa được gửi hoặc chưa hoàn thành.
  • Yêu cầu không có dạng truyền phát.
  • cOffset không phải là cùng một giá trị lệch được cung cấp bởi HTTPRequestDataReceived_t.
  • unBufferSize không cùng kích thước được cung cấp bởi HTTPRequestDataReceived_t.

PrioritizeHTTPRequest

bool PrioritizeHTTPRequest( HTTPRequestHandle hRequest );
TênLoạiMô tả
hRequestHTTPRequestHandleHandle yêu cầu cần ưu tiên.

Ưu tiên yêu cầu đã gửi bằng cách chuyển lên đầu hàng đợi.

Trả về: bool
Trả về true nếu yêu cầu được ưu tiên thành công. Còn không, false nếu hRequest là handle không hợp lệ, hoặc nếu yêu cầu chưa được gửi.

Xem thêm: SendHTTPRequest, SendHTTPRequestAndStreamResponse

ReleaseCookieContainer

bool ReleaseCookieContainer( HTTPCookieContainerHandle hCookieContainer );
TênLoạiMô tả
hCookieContainerHTTPCookieContainerHandleHandle của hộp chứa cookie cần giải phóng.

Giải phóng hộp chứa cookie, trả lại bộ nhớ được phân bổ trong Steam.

Bạn PHẢI gọi lệnh này khi đã dùng xong từng HTTPCookieContainerHandle nhận được qua CreateCookieContainer!

Trả về: bool
Trả về true nếu handle đã được giải phóng; còn không, false nếu handle không hợp lệ.

ReleaseHTTPRequest

bool ReleaseHTTPRequest( HTTPRequestHandle hRequest );
TênLoạiMô tả
hRequestHTTPRequestHandleHandle yêu cầu cần giải phóng.

Giải phóng một handle yêu cầu HTTP, trả lại bộ nhớ được phân bổ trong Steam.

Bạn PHẢI gọi lệnh này khi đã dùng xong từng HTTPRequestHandle nhận được qua CreateHTTPRequest!

Trả về: bool
Trả về true nếu handle đã được giải phóng thành công; còn không, false chỉ khi handle không hợp lệ.

SendHTTPRequest

bool SendHTTPRequest( HTTPRequestHandle hRequest, SteamAPICall_t *pCallHandle );
TênLoạiMô tả
hRequestHTTPRequestHandleHandle yêu cầu cần gửi.
pCallHandleSteamAPICall_t *Trả về handle kết quả lệnh gọi để nhận phản hồi.

Gửi yêu cầu HTTP.

Lệnh gọi này không đồng bộ và cung cấp handle kết quả lệnh gọi mà bạn phải dùng để theo dõi cho đến khi hoàn thành. Nếu đang thực hiện nhiều yêu cầu cùng lúc, bạn có thể dùng PrioritizeHTTPRequest hoặc DeferHTTPRequest để đặt mức độ ưu tiên của yêu cầu.

Nếu người dùng đang sử dụng Steam ở chế độ ngắt mạng, lệnh này sẽ thêm header cache-control với giá trị only-if-cached và chỉ tìm kiếm trong bộ nhớ tạm trên máy thay vì gửi bất kỳ yêu cầu từ xa nào.

Nếu dữ liệu bạn cần có kích thước lớn, có thể sử dụng SendHTTPRequestAndStreamResponse để truyền dữ liệu theo từng mảnh.

Trả về: bool
Kích hoạt callback HTTPRequestCompleted_t.
Trả về true khi đặt giá trị cho tham số thành công.
Trả về false trong những trường hợp sau:
  • hRequest không hợp lệ.
  • Yêu cầu đã được gửi đi.
  • pCallHandleNULL.

SendHTTPRequestAndStreamResponse

bool SendHTTPRequestAndStreamResponse( HTTPRequestHandle hRequest, SteamAPICall_t *pCallHandle );
TênLoạiMô tả
hRequestHTTPRequestHandleHandle yêu cầu cần gửi.
pCallHandleSteamAPICall_t *Trả về handle kết quả lệnh gọi để nhận phản hồi.

Gửi yêu cầu HTTP và truyền phản hồi về theo từng mảnh.

Lệnh gọi này không đồng bộ và cung cấp handle kết quả lệnh gọi mà bạn phải dùng để theo dõi cho đến khi hoàn thành. Thông thường, bạn sẽ muốn phân bổ bộ nhớ đệm liên kết với handle yêu cầu bằng cách dùng trường phản hồi HTTP Content-Length để lấy tổng kích thước của dữ liệu khi nhận header qua HTTPRequestHeadersReceived_t. Sau đó, bạn có thể thêm dữ liệu vào bộ nhớ đệm đó khi nhận thêm dữ liệu.

Nếu đang thực hiện nhiều yêu cầu cùng lúc, bạn có thể dùng PrioritizeHTTPRequest hoặc DeferHTTPRequest để đặt mức độ ưu tiên của yêu cầu.

Nếu người dùng đang sử dụng Steam ở chế độ ngắt mạng, lệnh này sẽ thêm header cache-control với giá trị only-if-cached và chỉ tìm kiếm trong bộ nhớ tạm trên máy thay vì gửi bất kỳ yêu cầu từ xa nào.

Nếu dữ liệu bạn cần có kích thước nhỏ (khoảng vài megabyte trở xuống), thì bạn có thể sẽ muốn dùng SendHTTPRequest.

Trả về: bool
Kích hoạt callback HTTPRequestDataReceived_t.
Kích hoạt callback HTTPRequestHeadersReceived_t.
Kích hoạt callback HTTPRequestCompleted_t.
Trả về true khi đặt giá trị cho tham số thành công.
Trả về false trong những trường hợp sau:
  • hRequest không hợp lệ.
  • Yêu cầu đã được gửi đi.
  • pCallHandleNULL.

SetCookie

bool SetCookie( HTTPCookieContainerHandle hCookieContainer, const char *pchHost, const char *pchUrl, const char *pchCookie );
TênLoạiMô tả
hCookieContainerHTTPCookieContainerHandleHộp chứa cookie để đặt cookie.
pchHostconst char *Máy chủ (host) để đặt cookie.
pchUrlconst char *URL để đặt cookie.
pchCookieconst char *Cookie cần đặt.

Thêm cookie vào hộp chứa cookie chỉ định, sẽ được dùng trong các yêu cầu tương lai.

Trả về: bool
Trả về true nếu cookie được đặt thành công. Còn không, false nếu handle yêu cầu không hợp lệ hoặc nếu xảy ra vấn đề bảo mật khi phân tích cookie.

SetHTTPRequestAbsoluteTimeoutMS

bool SetHTTPRequestAbsoluteTimeoutMS( HTTPRequestHandle hRequest, uint32 unMilliseconds );
TênLoạiMô tả
hRequestHTTPRequestHandleHandle yêu cầu cần đặt thời gian chờ.
unMillisecondsuint32Độ dài thời gian chờ, tính bằng mili giây.

Đặt thời gian chờ tuyệt đối cho yêu cầu HTTP, tính bằng mili giây.

Đây là thời gian chờ cho thời gian tổng, khác với thời gian chờ cho hoạt động mạng được đặt với SetHTTPRequestNetworkActivityTimeout có thể tăng lên mỗi khi nhận thêm dữ liệu.

Trả về: bool
Trả về true khi thành công đặt thời gian chờ.
Trả về false trong những trường hợp sau:
  • hRequest không hợp lệ.
  • Yêu cầu đã được gửi đi.

SetHTTPRequestContextValue

bool SetHTTPRequestContextValue( HTTPRequestHandle hRequest, uint64 ulContextValue );
TênLoạiMô tả
hRequestHTTPRequestHandleHandle yêu cầu để đặt giá trị context.
ulContextValueuint64Giá trị context cần đặt.

Đặt giá trị context cho yêu cầu, sẽ được trả về qua lệnh callback HTTPRequestCompleted_t sau khi gửi yêu cầu.

Lệnh này cho phép người gọi đặt giá trị cho ContextID để có thể quy gán một callback cụ thể tới một yêu cầu cụ thể.

Phải được gọi trước khi gửi yêu cầu.

Trả về: bool
Trả về true khi thành công đặt giá trị context.
Trả về false trong những trường hợp sau:
  • hRequest không hợp lệ.
  • Yêu cầu đã được gửi đi.

SetHTTPRequestCookieContainer

bool SetHTTPRequestCookieContainer( HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer );
TênLoạiMô tả
hRequestHTTPRequestHandleHandle yêu cầu để liên kết tới hộp chứa cookie.
hCookieContainerHTTPCookieContainerHandleHandle hộp chứa cookie cần liên kết với handle yêu cầu.

Liên kết hộp chứa cookie để sử dụng cho yêu cầu HTTP.

Trả về: bool
Trả về true khi thành công thiết lập hộp chứa cookie.
Trả về false trong những trường hợp sau:
  • hRequest không hợp lệ.
  • hCookieContainer không hợp lệ.

SetHTTPRequestGetOrPostParameter

bool SetHTTPRequestGetOrPostParameter( HTTPRequestHandle hRequest, const char *pchParamName, const char *pchParamValue );
TênLoạiMô tả
hRequestHTTPRequestHandleHandle yêu cầu để đặt tham số.
pchParamNameconst char *Trường tên của tham số.
pchParamValueconst char *Giá trị để liên kết tới trường tên.

Đặt giá trị tham số GET hoặc POST lên yêu cầu HTTP.

Phải được gọi trước khi gửi yêu cầu.

Trả về: bool
Trả về true khi thành công đặt tham số.
Trả về false trong những trường hợp sau:

SetHTTPRequestHeaderValue

bool SetHTTPRequestHeaderValue( HTTPRequestHandle hRequest, const char *pchHeaderName, const char *pchHeaderValue );
TênLoạiMô tả
hRequestHTTPRequestHandleHandle yêu cầu để đặt giá trị header.
pchHeaderNameconst char *Trường tên header.
pchHeaderValueconst char *Giá trị để liên kết tới trường tên header.

Đặt giá trị header yêu cầu cho yêu cầu HTTP.

Phải được gọi trước khi gửi yêu cầu.

Danh sách đầy đủ các trường yêu cầu tiêu chuẩn có trên wikipedia. Cấm ghi vào trường User-Agent vì trường bị ghi đè khi gửi yêu cầu.

Trả về: bool
Trả về true khi thành công đặt giá trị header.
Trả về false trong những trường hợp sau:
  • hRequest không hợp lệ.
  • Yêu cầu đã được gửi đi.
  • pchHeaderName"User-Agent".
  • pchHeaderName hoặc pchHeaderValueNULL.

SetHTTPRequestNetworkActivityTimeout

bool SetHTTPRequestNetworkActivityTimeout( HTTPRequestHandle hRequest, uint32 unTimeoutSeconds );
TênLoạiMô tả
hRequestHTTPRequestHandleHandle yêu cầu cần đặt thời gian chờ.
unTimeoutSecondsuint32Độ dài thời gian chờ, tính bằng giây.

Đặt thời gian chờ cho yêu cầu HTTP, tính bằng giây.

Thời gian chờ mặc định là 60 giây nếu không gọi hàm này. Có thể tăng lên mỗi khi nhận thêm dữ liệu. Dùng SetHTTPRequestAbsoluteTimeoutMS nếu cần đặt thời gian chờ tối đa nghiêm ngặt.

Trả về: bool
Trả về true khi thành công đặt thời gian chờ.
Trả về false trong những trường hợp sau:
  • hRequest không hợp lệ.
  • Yêu cầu đã được gửi đi.

SetHTTPRequestRawPostBody

bool SetHTTPRequestRawPostBody( HTTPRequestHandle hRequest, const char *pchContentType, uint8 *pubBody, uint32 unBodyLen );
TênLoạiMô tả
hRequestHTTPRequestHandleHandle yêu cầu để đặt giá trị cho body của lệnh POST.
pchContentTypeconst char *Đặt giá trị cho header http "content-type" của lệnh gọi.
pubBodyuint8 *Dữ liệu body dạng thô của lệnh POST để đặt giá trị.
unBodyLenuint32Độ dài dữ liệu body truyền vào pubBody.

Đặt giá trị cho body của yêu cầu POST HTTP.

Sẽ thất bại và trả về false cho yêu cầu GET, và sẽ thất bại nếu tham số POST đã được đặt cho yêu cầu. Giá trị dạng thô cho body này khi được đặt sẽ trở thành nội dung duy nhất của lệnh POST, tham số pchContentType sẽ đặt giá trị header "content-type" cho yêu cầu để giúp máy chủ biết cách diễn giải body.

Trả về: bool
Trả về true khi thành công chỉ ra trường content-type và dữ liệu body đã được đặt.
Còn không, trả về false trong những trường hợp sau:

SetHTTPRequestRequiresVerifiedCertificate

bool SetHTTPRequestRequiresVerifiedCertificate( HTTPRequestHandle hRequest, bool bRequireVerifiedCertificate );
TênLoạiMô tả
hRequestHTTPRequestHandleHandle yêu cầu để đặt xem yêu cầu có cần chứng chỉ xác thực không.
bRequireVerifiedCertificateboolBật chứng chỉ xác thực?

Đặt là yêu cầu HTTPS cần chứng chỉ SSL xác thực thông qua kho lưu trữ tin cậy (trust store) cho chứng chỉ máy.

Hiện chỉ hoạt động trên Windows và macOS.

Trả về: bool
Trả về true khi thành công. Còn không, false nếu handle yêu cầu không hợp lệ.

SetHTTPRequestUserAgentInfo

bool SetHTTPRequestUserAgentInfo( HTTPRequestHandle hRequest, const char *pchUserAgentInfo );
TênLoạiMô tả
hRequestHTTPRequestHandleHandle yêu cầu cần đặt thông tin user agent.
pchUserAgentInfoconst char *Chuỗi để gắn vào cuối user agent.

Đặt thông tin user agent bổ sung cho yêu cầu.

Thao tác này không ghi đè user agent bình thường, mà chỉ thêm thông tin bổ sung ở phía cuối. Gửi NULL hoặc chuỗi rỗng để đặt lại thông tin user agent thành giá trị mặc định.

Trả về: bool
Trả về true khi thành công chỉ ra user agent đã được cập nhật. Còn không, false nếu handle yêu cầu không hợp lệ.

Callback

Đây là các callback có thể kích hoạt bằng cách gọi SteamAPI_RunCallbacks. Rất nhiều trong số này sẽ được kích hoạt trực tiếp để phản hồi lại hàm con của ISteamHTTP.

HTTPRequestCompleted_t

Kết quả khi yêu cầu HTTP hoàn thành.
Nếu đang dùng GetHTTPStreamingResponseBodyData thì nên dùng HTTPRequestHeadersReceived_t hoặc HTTPRequestDataReceived_t.

TênLoạiMô tả
m_hRequestHTTPRequestHandleHandle cho yêu cầu đã hoàn thành. Nên gọi ReleaseHTTPRequest trên handle này để giải phóng tài nguyên sau khi sử dụng xong, thường trong callback này.
m_ulContextValueuint64Giá trị context mà người dùng định nghĩa trên yêu cầu với SetHTTPRequestContextValue liên kết với callback này. 0 nếu không có giá trị context nào được đặt.
m_bRequestSuccessfulboolĐây sẽ là true nếu yêu cầu nhận được bất cứ phản hồi nào từ máy chủ (kể cả phản hồi báo lỗi).
Còn không, sẽ là false nếu yêu cầu thất bại do lỗi nội bộ hoặc phía client không kết nối mạng được.
m_eStatusCodeEHTTPStatusCodeSẽ là giá trị mã trạng thái HTTP do máy chủ trả về.
k_EHTTPStatusCode200OK là phản hồi OK bình thường, nếu nhận được phản hồi khác thì nên xem là đã thất bại.
m_unBodySizeuint32Kích thước body của yêu cầu, tính bằng byte. Tương tự như GetHTTPResponseBodySize.

Hàm liên quan: SendHTTPRequest, SendHTTPRequestAndStreamResponse

HTTPRequestDataReceived_t

Kích hoạt khi nhận mảnh dữ liệu từ một yêu cầu truyền phát bằng HTTP.

TênLoạiMô tả
m_hRequestHTTPRequestHandleGiá trị handle cho yêu cầu đã nhận dữ liệu.
m_ulContextValueuint64Giá trị context mà người dùng định nghĩa trên yêu cầu liên quan tới callback này, 0 nếu không có giá trị context nào được đặt.
m_cOffsetuint32Giá trị lệch cung cấp cho GetHTTPStreamingResponseBodyData để lấy mảnh dữ liệu này
m_cBytesReceiveduint32Kích thước tính bằng byte, cung cấp cho GetHTTPStreamingResponseBodyData để lấy mảnh dữ liệu này

Hàm liên quan: SendHTTPRequestAndStreamResponse

HTTPRequestHeadersReceived_t

Kích hoạt khi nhận header HTTP từ một yêu cầu truyền phát bằng HTTP.

TênLoạiMô tả
m_hRequestHTTPRequestHandleGiá trị handle cho yêu cầu đã nhận header.
m_ulContextValueuint64Giá trị context mà người dùng định nghĩa trên yêu cầu liên quan tới callback này, 0 nếu không có giá trị context nào được đặt.

Hàm liên quan: SendHTTPRequestAndStreamResponse

Enum

Đây là các enum được định nghĩa để dùng với ISteamHTTP.

EHTTPMethod

Được dùng để đặt phương thức yêu cầu HTTP trong CreateHTTPRequest. Đa phần bạn chỉ cần dùng GET hoặc POST.

Có thể đọc thêm về các phương thức cho yêu cầu HTTP trên Mozilla Developer Network (Mạng lưới nhà phát triển Mozilla).

TênGiá trịMô tả
k_EHTTPMethodInvalid0Không hợp lệ.
k_EHTTPMethodGET1Phương thức HTTP được đặt thành GET.
k_EHTTPMethodHEAD2Phương thức HTTP được đặt thành HEAD.
k_EHTTPMethodPOST3Phương thức HTTP được đặt thành POST.
k_EHTTPMethodPUT4Phương thức HTTP được đặt thành PUT.
k_EHTTPMethodDELETE5Phương thức HTTP được đặt thành DELETE.
k_EHTTPMethodOPTIONS6Phương thức HTTP được đặt thành OPTIONS.
k_EHTTPMethodPATCH7Phương thức HTTP được đặt thành PATCH.

EHTTPStatusCode

Mã trạng thái phản hồi HTTP mà máy chủ có thể gửi để đáp lại một yêu cầu.

Xem mô tả chi tiết cho các mã này trên Mozilla Developer Network (Mạng lưới nhà phát triển Mozilla) hoặc tại mục 10.3 RFC2616.

TênGiá trịMô tả
k_EHTTPStatusCodeInvalid0Mã trạng thái không hợp lệ. Không được định nghĩa trong HTTP, được dùng khi chúng tôi chưa đặt giá trị cho mã.
k_EHTTPStatusCode100Continue100
k_EHTTPStatusCode101SwitchingProtocols101
k_EHTTPStatusCode200OK200
k_EHTTPStatusCode201Created201
k_EHTTPStatusCode202Accepted202
k_EHTTPStatusCode203NonAuthoritative203
k_EHTTPStatusCode204NoContent204
k_EHTTPStatusCode205ResetContent205
k_EHTTPStatusCode206PartialContent206
k_EHTTPStatusCode300MultipleChoices300
k_EHTTPStatusCode301MovedPermanently301
k_EHTTPStatusCode302Found302
k_EHTTPStatusCode303SeeOther303
k_EHTTPStatusCode304NotModified304
k_EHTTPStatusCode305UseProxy305
k_EHTTPStatusCode307TemporaryRedirect307
k_EHTTPStatusCode400BadRequest400
k_EHTTPStatusCode401Unauthorized401Có lẽ bạn muốn dùng 403 hoặc mã khác. 401 có nghĩa là bạn đang gửi đi header WWW-Authenticate và client có thể gửi header Authorization để phản hồi.
k_EHTTPStatusCode402PaymentRequired402Dành riêng cho thông số kỹ thuật HTTP sau này, không thật sự được client hỗ trợ.
k_EHTTPStatusCode403Forbidden403
k_EHTTPStatusCode404NotFound404
k_EHTTPStatusCode405MethodNotAllowed405
k_EHTTPStatusCode406NotAcceptable406
k_EHTTPStatusCode407ProxyAuthRequired407
k_EHTTPStatusCode408RequestTimeout408
k_EHTTPStatusCode409Conflict409
k_EHTTPStatusCode410Gone410
k_EHTTPStatusCode411LengthRequired411
k_EHTTPStatusCode412PreconditionFailed412
k_EHTTPStatusCode413RequestEntityTooLarge413
k_EHTTPStatusCode414RequestURITooLong414
k_EHTTPStatusCode415UnsupportedMediaType415
k_EHTTPStatusCode416RequestedRangeNotSatisfiable416
k_EHTTPStatusCode417ExpectationFailed417
k_EHTTPStatusCode4xxUnknown418Dành riêng 418 cho trường hợp trạng thái không rõ.
k_EHTTPStatusCode429TooManyRequests429
k_EHTTPStatusCode500InternalServerError500
k_EHTTPStatusCode501NotImplemented501
k_EHTTPStatusCode502BadGateway502
k_EHTTPStatusCode503ServiceUnavailable503
k_EHTTPStatusCode504GatewayTimeout504
k_EHTTPStatusCode505HTTPVersionNotSupported505
k_EHTTPStatusCode5xxUnknown599

Typedef

Đây là các typedef được định nghĩa để dùng với ISteamHTTP.

TênLoại gốcMô tả
HTTPCookieContainerHandleuint32
HTTPRequestHandleuint32Handle cho một handle yêu cầu HTTP

Hằng số

Đây là các hằng số được định nghĩa để dùng với ISteamHTTP.

TênLoạiGiá trịMô tả
INVALID_HTTPCOOKIE_HANDLEint0
INVALID_HTTPREQUEST_HANDLEint0
STEAMHTTP_INTERFACE_VERSIONconst char *"STEAMHTTP_INTERFACE_VERSION002"