场景介绍
发送一个带有默认HTTP参数的HTTP POST请求,并返回来自服务器的HTTP响应。使用异步回调。常用于向服务器提交数据。与GET请求不同,POST请求将参数包含在请求主体中,适用于创建新资源、提交表单数据或执行某些操作。
使用示例
- CPP侧导入模块。
#include "RemoteCommunicationKit/rcp.h"
#include <cstdlib>
#include <cstring>
#include <stdio.h>
#include <unistd.h>
-
CMakeLists.txt中添加以下lib。
librcp_c.so
-
创建会话,会话发起post请求。“http://www.example.com”请根据实际情况替换为想要请求的URL地址。等待响应返回后,销毁request并关闭session。
void ResponseCallback(void *usrCtx, Rcp_Response *response, uint32_t errCode)
{
(void *)usrCtx;
if (response != NULL) {
printf("Response status: %d\n", response->statusCode);
} else {
printf("Fetch failed: errCode: %u\n", errCode);
}
// 注意清理响应
if (response != NULL) {
response->destroyResponse(response);
}
}
bool g_callback = false;
int main() {
const char *kHttpServerAddress = "http://www.example.com";
const char *content = "content";
Rcp_Request *request = HMS_Rcp_CreateRequest(kHttpServerAddress);
// 设置request参数
request->method = RCP_METHOD_POST;
request->content = (Rcp_RequestContent *)calloc(1, sizeof(Rcp_RequestContent));
request->content->type = RCP_CONTENT_TYPE_STRING;
request->content->data.contentStr.buffer = content;
request->content->data.contentStr.length = strlen(content);
uint32_t errCode = 0;
// 创建session
Rcp_Session *session = HMS_Rcp_CreateSession(NULL, &errCode);
// 配置请求回调
Rcp_ResponseCallbackObject responseCallback = {ResponseCallback, NULL};
// 发起请求
errCode = HMS_Rcp_Fetch(session, request, &responseCallback);
// 处理errCode
// 等待fetch结果
int timeout = 100;
while (timeout-- > 0 && !g_callback) {
usleep(1000);
}
// 清理request
HMS_Rcp_DestroyRequest(request);
// 清理request->content
free(request->content);
// 关闭session
errCode = HMS_Rcp_CloseSession(&session);
// 处理errCode
return 0;
}