int http_get_warningduration(int *value) { int rt; char result_str[MAX_RESULT] = {0}; char response_json_str[MAX_RESULT] = {0}; const char url_str[]= "http://127.0.0.1/cgi-bin/rest/network/GatewaySettingOperation.cgi?operatortype=0¶m1=0"; cJSON *response_json, *json_temp; rt = http_curl_get(url_str, result_str); if(rt <0) { GDGL_DEBUG("invoke api failed\n"); return -1; } get_json_str(response_json_str, result_str); response_json = cJSON_Parse(response_json_str); if (!response_json) { GDGL_DEBUG("json parse Error before: (%s)\n", cJSON_GetErrorPtr()); return -2; } json_temp = cJSON_GetObjectItem(response_json, "warningduration"); if(!json_temp) { GDGL_DEBUG("cJSON_GetObjectItem failed\n"); cJSON_Delete(response_json); return -2; } *value = json_temp->valueint; cJSON_Delete(response_json); return 0; }
static void load_json_str_value(int8 *dest, int32 max_len, json_t *jobj, int8 *name) { int8 *data = get_json_str(jobj, name); if (data == NULL) return; strncpy(dest, data, max_len - 1); }
static void load_json_str_value(char *dest, int max_len, json_t *jobj, char *name) { char *data = get_json_str(jobj, name); if (data == NULL) return; strncpy_safe(dest, data, max_len, max_len - 1); }
int http_get_dev_modeid(char *mode_id, const char *ieee) { int rt; char result_str[MAX_RESULT] = {0}; char response_json_str[MAX_RESULT] = {0}; char url_str[200]; cJSON *response_json, *json_node, *json_temp; char *temp_mode_id; snprintf(url_str, sizeof(url_str), "http://127.0.0.1/cgi-bin/rest/network/zbGetZBNodeByIEEE.cgi?" "ieee=%s&callback=1234&encodemethod=NONE&sign=AAA", ieee); rt = http_curl_get(url_str, result_str); if(rt <0) { GDGL_DEBUG("invoke api failed\n"); return -1; } get_json_str(response_json_str, result_str); response_json = cJSON_Parse(response_json_str); if (!response_json) { GDGL_DEBUG("json parse Error before: (%s)\n", cJSON_GetErrorPtr()); return -2; } json_temp = cJSON_GetObjectItem(response_json, "response_params"); if(!json_temp) { GDGL_DEBUG("cJSON_GetObjectItem failed\n"); cJSON_Delete(response_json); return -2; } json_node = cJSON_GetObjectItem(json_temp, "node"); if(!json_node) { GDGL_DEBUG("cJSON_GetObjectItem failed\n"); cJSON_Delete(response_json); return -2; } json_temp = cJSON_GetObjectItem(json_node, "model_id"); if(!json_temp) { GDGL_DEBUG("cJSON_GetObjectItem failed\n"); cJSON_Delete(response_json); return -2; } temp_mode_id = json_temp->valuestring; // printf("temp_mode_id=%s\n", temp_mode_id); snprintf(mode_id, strlen(temp_mode_id)+1, "%s", temp_mode_id); cJSON_Delete(response_json); return 0; }
/* * 调api后将数据上传至云代理 * */ int invoke_api_and_upload(const char *url_str, int api_num) { time_t timestamp; // char timestamp_str[10] = {0}; int rt =0; char result_str[MAX_RESULT] = {0}; char response_json_str[MAX_RESULT] = {0}; cJSON *response_json; cJSON *new_json; char *new_json_str; timestamp = time(NULL); // snprintf(timestamp_str, sizeof(timestamp_str), "%ld", timestamp); wati_server_init_ok(); rt = http_curl_get(url_str, result_str); if(rt <0) { GDGL_DEBUG("invoke api failed\n"); return -1; } get_json_str(response_json_str, result_str); response_json = cJSON_Parse(response_json_str); if (!response_json) { GDGL_DEBUG("json parse Error before: (%s)\n", cJSON_GetErrorPtr()); return -2; } else { new_json = cJSON_CreateObject(); cJSON_AddNumberToObject(new_json, "datatype", api_num); cJSON_AddItemToObject(new_json, "data", response_json); cJSON_AddNumberToObject(new_json, "uploadtime", timestamp); new_json_str = cJSON_PrintUnformatted(new_json); // printf("new_json_str:%s, strlen:%d\n", new_json_str, strlen(new_json_str)); GDGL_DEBUG("new_json_str strlen:%d, string:%s\n", strlen(new_json_str), new_json_str); rt = upload_2_server(new_json_str, strlen(new_json_str)); free(new_json_str); cJSON_Delete(new_json); return rt; } cJSON_Delete(response_json); return rt; }