Tizen可穿戴原生应用HTTP Post发送JSON对象方法咨询
嘿,我刚好之前在Tizen可穿戴原生应用里搞定过这个需求,官方文档确实只给了基础的Post片段,没提JSON怎么嵌,给你整理了完整的实现步骤和代码,应该能直接用!
实现Tizen可穿戴原生应用HTTP Post提交JSON数据
首先,你得先在应用的tizen-manifest.xml里添加互联网权限,不然请求会被拦截:
<privilege>http://tizen.org/privilege/internet</privilege>
接下来是核心的C语言代码实现,我会把关键步骤都注释清楚:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <curl/curl.h> // 回调函数:用来接收服务器响应的数据 size_t write_callback(void *contents, size_t size, size_t nmemb, void *userp) { size_t realsize = size * nmemb; char **response_str = (char **)userp; *response_str = realloc(*response_str, strlen(*response_str) + realsize + 1); if (*response_str == NULL) { printf("内存分配失败!\n"); return 0; } strncat(*response_str, contents, realsize); (*response_str)[strlen(*response_str) + realsize] = '\0'; return realsize; } int main(void) { CURL *curl; CURLcode res; char *response = malloc(1); // 初始化响应字符串 *response = '\0'; // 1. 初始化curl会话 curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if (curl) { // 2. 设置请求URL curl_easy_setopt(curl, CURLOPT_URL, "https://你的接口地址.com/api/post"); // 3. 构建要提交的JSON数据 const char *json_data = "{\"name\": \"Tizen Wearable\", \"version\": \"7.0\", \"data\": \"test content\"}"; // 4. 设置POST请求,附加JSON数据 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_data); // 5. 设置请求头:指定Content-Type为application/json struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Content-Type: application/json"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); // 6. 设置响应回调函数 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response); // 7. 发送请求 res = curl_easy_perform(curl); // 检查请求是否成功 if (res != CURLE_OK) { fprintf(stderr, "curl请求失败: %s\n", curl_easy_strerror(res)); } else { printf("服务器响应: %s\n", response); } // 8. 清理资源 curl_slist_free_all(headers); curl_easy_cleanup(curl); } curl_global_cleanup(); free(response); return 0; }
关键细节说明:
- 如果不想用curl,也可以用Tizen原生的
http-client模块,核心逻辑是一样的:构建JSON字符串 → 设置Content-Type请求头 → 将JSON作为请求体发送 - 注意JSON字符串的格式一定要正确,不然服务器可能解析失败,可以先用在线JSON校验工具检查
- 内存管理很重要,记得释放所有分配的内存(比如response字符串、curl会话、请求头列表)
- 实际开发中建议把请求放在后台线程里,避免阻塞UI线程
如果你用的是C++,只需要把代码稍作调整,比如用std::string来管理JSON数据和响应,逻辑是完全一致的。
内容的提问来源于stack exchange,提问作者Ravi
相关产品推荐
相关产品推荐

