访问libcurl内部文件
Accessing internal libcurl ptrs
我目前使用libcurl
来检查php
脚本并将其输出写入文件。我想添加错误消息,要这样做,我计划在写入文件之前读取数据,检查php
的错误消息,如果它们存在,则取消文件写入并返回错误消息。我的代码是:
static size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream)
{
size_t written = fwrite(ptr, size, nmemb, stream);
return written;
}
int PhpQuerier::getBlob(string* frameName, string fn)
{
CURL *curl;
FILE *fp;
CURLcode res;
string query = "http://192.168.1.14/selectBlob.php?tableNameFAIL=frame_info&bColName=frame_data&selectCon=frame_name='";
query.append(*frameName); query.append("'");
const char *url = query.c_str();
curl = curl_easy_init();
if (curl) {
fp = fopen(fn.c_str(),"wb");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
fclose(fp);
}
return res;
}
我在tableName
中添加了FAIL
,以确保我的代码会失败。
我需要做的是访问write_data中的void *ptr
。如果我添加printf("%*.*s",size * nmemb, size * nmemb, ptr);
,我可以打印值,但我需要在主函数中访问它,而不仅仅是静态write_data。
我可以访问getBlob中的ptr吗?或者,如果失败,是否可以创建一个全局变量,可以看到静态write_data和getBlob?
提前感谢!
回调获取所有数据,您可以轻松地将所有数据附加到内存中的单个缓冲区中,并检查您正在寻找的字符串-并继续写入文件。如果那真的是你想要的。
这里有一个简单的示例,演示如何将整个响应接收到内存缓冲区中:http://curl.haxx.se/libcurl/c/getinmemory.html
相关文章:
- 从函数角度看ID到文件路径的内部与外部映射
- 将内部带有矢量的结构保存/读取到二进制文件中
- 如何在公共头文件中向库的用户公开枚举,同时在内部使用它?
- 访问 Python 内部的C++文件
- 致命错误 C1001 :vs2017 15.8.4 的内部错误(编译器文件"msc1.cpp",第
- 在Linux Mint 19下,从哪里提取wxWidgets的源代码(.cpp文件)用于步骤内部调试
- C++读取内部文件Android NDK
- C 使用getline()内部循环以在CSV文件中读取
- exe文件不被识别为内部或外部命令,可操作的程序或批处理文件在C++
- 我的应用程序是从Visual Studio内部运行还是通过执行EXE文件运行
- 为什么内部链接的名称会出现在我的目标文件的符号表中?
- C++ Android 资源管理器从应用内部目录中读取文件
- (CMake 内部版本)致命错误LNK1181:无法打开输入文件'glew.lib'
- C++ - 在单独的文件中实现内部模板类的模板方法
- 在程序集文件内部调用C++函数
- 使用流写入文件内部
- c 如何从类类 .h 文件内部识别.cpp中的 UDT 枚举
- Windows NT 二进制可执行文件内部常量字符串编码
- 如何从Python文件内部导入Boost.Python
- 使用JNA从java中的源对象(.so)文件内部调用C++函数时发生链接异常