相关文章推荐
年轻有为的烤地瓜  ·  c - makefile error: ...·  2 年前    · 
另类的电脑桌  ·  AI有道 - 知乎·  2 年前    · 

工作中需要使用json.最后抓了报文,对比代码输出,才得以解决。在这里共享出来,给需要的朋友一点帮助。

需要整个代码的朋友,可以下载《 C代码版本的HTTP POST上传文件/JSON 》:

static int http_post(tcpclient *pclient, const char *page,
 const const char* message_json, int* ret_code, char **response)
    char content_buffer[4096] = {0};
    char post[512]={0};
    char host[256]={0};
    char* lpbuf = NULL;
    char* ptmp  = NULL;
    const char *header2="Connection: keep-alive\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nUser-Agent: python-requests/2.18.4\r\n";
    sprintf(post,"POST %s HTTP/1.1\r\n",page);
    strcpy(content_buffer, post);
    sprintf(host,"HOST: %s:%d\r\n",pclient->remote_ip,pclient->remote_port);
    strcat(content_buffer, host);
    strcat(content_buffer, header2);
    char *lenstr;
    lenstr = (char*)GH_MEM_MALLOC(256);
    sprintf(lenstr, "%d", (int)(strlen(message_json)));
    strcat(content_buffer, "Content-Length: ");
    strcat(content_buffer, lenstr);
    strcat(content_buffer, "\r\n");
    char content_type[4096] = {0};
    strcat(content_type, "Content-Type: application/json");
    strcat(content_type, "\r\n\r\n");
    strcat(content_type, message_json);
    strcat(content_buffer, content_type);
    GH_MEM_FREE(lenstr);
    tcpclient_send(pclient, content_buffer, strlen(content_buffer));