You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:08:43