通过libcurl向服务端发送数据的2种方式:get/post

1.get方式发送数据

    url格式:服务器url地址+ 接口url地址+"?"+发送的数据(特定格式),如:

    http://172.16.3.123:8080/temp/getScreenImages?userDes=4E&userKey=D7B7BA3F24A84D738D8B7A15CC30201A&dataLen=0&data=

  参考代码如下:get方式下载文件并传递数据

   static size_t my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream)
{
struct FtpFile *out=(struct FtpFile *)stream;
if(out && !out->stream) {
out->stream=fopen(out->filename, "wb");//打开文件进行写入
if(!out->stream)
return -1;
}
return fwrite(buffer, size, nmemb, out->stream);
}

    bool cathttpclient::get(IN const std::string &stshortrurl, IN const std::string &strshortdata, 
IN const std::string &strfilepath)
{
bool bret = false;
if (stshortrurl.empty() || strfilepath.empty())
{
LOG_ALL_ERROR(QString("failed download param is empty."));
return bret;
}


std::string strpostdata("");

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C语言中,可以使用一些库来执行HTTP的GET和POST请求,并下载文件。在这里,我们将使用libcurl库来完成这些操作。 首先,我们需要在代码中引入libcurl库的头文件。 ```c #include <stdio.h> #include <curl/curl.h> ``` 然后,我们可以定义一个回调函数,用于处理下载的数据。 ```c size_t write_callback(void* ptr, size_t size, size_t nmemb, FILE* stream) { return fwrite(ptr, size, nmemb, stream); } ``` 接下来,我们可以编写一个函数来执行HTTP的GET请求,并将返回的数据保存到文件中。 ```c void http_get(const char* url, const char* file_path) { FILE* file = fopen(file_path, "wb"); if (file == NULL) { printf("无法打开文件!\n"); return; } CURL* curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, file); CURLcode res = curl_easy_perform(curl); if (res != CURLE_OK) { printf("请求失败:%s\n", curl_easy_strerror(res)); } curl_easy_cleanup(curl); } fclose(file); } ``` 最后,我们可以编写一个函数来执行HTTP的POST请求,并将返回的数据保存到文件中。 ```c void http_post(const char* url, const char* post_data, const char* file_path) { FILE* file = fopen(file_path, "wb"); if (file == NULL) { printf("无法打开文件!\n"); return; } CURL* curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, file); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, post_data); CURLcode res = curl_easy_perform(curl); if (res != CURLE_OK) { printf("请求失败:%s\n", curl_easy_strerror(res)); } curl_easy_cleanup(curl); } fclose(file); } ``` 通过使用以上两个函数,我们可以下载一个文件到指定的路径。例如,假设我们要下载一个名为"test.txt"的文件,可以使用以下代码: ```c http_get("http://example.com/test.txt", "test.txt"); ``` 或者,如果我们需要通过POST请求下载文件,可以使用以下代码: ```c const char* post_data = "param1=value1&param2=value2"; http_post("http://example.com/download", post_data, "test.txt"); ``` 以上就是使用C语言执行HTTP的GET和POST请求,并下载文件的示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值