Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将标题HTTP内容打印到字符串CURL C++ 现在我使用CURL C++在我的服务器上下载文件。如果使用命令行发送请求,im也会将标题内容打印到控制台屏幕。现在我想将标题内容打印成string或file.txt,以便在下载正文内容之前查看,但这是不可能的。即时通讯也搜索和做喜欢,但标题是空的。 这是我的简单代码 size_t write_data(void *ptr, size_t size, size_t nmemb, FILE* stream) { size_t written; written = fwrite(ptr, size, nmemb, stream); //LOGI("SDK: WRITE DATA"); return written; } void downloadFile(std::string url, std::string savepath) { const char* url_down = url.c_str(); std::string name = "download.apk"; std::string save_path = savepath + "/" + name; std::string header_path=savepath+"/header.txt"; const char* save_header_down=header_path.c_str(); const char* save_path_down = save_path.c_str(); CURL *curl; FILE* fp; FILE* headf; std::string bufRead; CURLcode res; curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if (curl) { fp = fopen(save_path_down, "wb"); headf=fopen(save_header_down,"wb"); curl_easy_setopt(curl, CURLOPT_URL, url_down); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); curl_easy_setopt(curl,CURLOPT_HEADERDATA,headf); curl_easy_setopt(curl,CURLOPT_HEADERDATA,&bufRead); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); curl_easy_setopt(curl, CURLOPT_NOPROGRESS, false); curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, S_Progress); startTime = get_timestamp(); res = curl_easy_perform(curl); if (res == CURLE_OK) { LOGI("SDK: FILE DOWNLOADED!"); } else { LOGI("SDK:TRANFER FAILED!"); } fclose(fp); fclose(headf); curl_easy_cleanup(curl); LOGI("SDK:HEADER:%s",bufRead.c_str()); } }_Android_C++_Eclipse_Curl_Java Native Interface - Fatal编程技术网

Android 如何将标题HTTP内容打印到字符串CURL C++ 现在我使用CURL C++在我的服务器上下载文件。如果使用命令行发送请求,im也会将标题内容打印到控制台屏幕。现在我想将标题内容打印成string或file.txt,以便在下载正文内容之前查看,但这是不可能的。即时通讯也搜索和做喜欢,但标题是空的。 这是我的简单代码 size_t write_data(void *ptr, size_t size, size_t nmemb, FILE* stream) { size_t written; written = fwrite(ptr, size, nmemb, stream); //LOGI("SDK: WRITE DATA"); return written; } void downloadFile(std::string url, std::string savepath) { const char* url_down = url.c_str(); std::string name = "download.apk"; std::string save_path = savepath + "/" + name; std::string header_path=savepath+"/header.txt"; const char* save_header_down=header_path.c_str(); const char* save_path_down = save_path.c_str(); CURL *curl; FILE* fp; FILE* headf; std::string bufRead; CURLcode res; curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if (curl) { fp = fopen(save_path_down, "wb"); headf=fopen(save_header_down,"wb"); curl_easy_setopt(curl, CURLOPT_URL, url_down); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); curl_easy_setopt(curl,CURLOPT_HEADERDATA,headf); curl_easy_setopt(curl,CURLOPT_HEADERDATA,&bufRead); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); curl_easy_setopt(curl, CURLOPT_NOPROGRESS, false); curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, S_Progress); startTime = get_timestamp(); res = curl_easy_perform(curl); if (res == CURLE_OK) { LOGI("SDK: FILE DOWNLOADED!"); } else { LOGI("SDK:TRANFER FAILED!"); } fclose(fp); fclose(headf); curl_easy_cleanup(curl); LOGI("SDK:HEADER:%s",bufRead.c_str()); } }

Android 如何将标题HTTP内容打印到字符串CURL C++ 现在我使用CURL C++在我的服务器上下载文件。如果使用命令行发送请求,im也会将标题内容打印到控制台屏幕。现在我想将标题内容打印成string或file.txt,以便在下载正文内容之前查看,但这是不可能的。即时通讯也搜索和做喜欢,但标题是空的。 这是我的简单代码 size_t write_data(void *ptr, size_t size, size_t nmemb, FILE* stream) { size_t written; written = fwrite(ptr, size, nmemb, stream); //LOGI("SDK: WRITE DATA"); return written; } void downloadFile(std::string url, std::string savepath) { const char* url_down = url.c_str(); std::string name = "download.apk"; std::string save_path = savepath + "/" + name; std::string header_path=savepath+"/header.txt"; const char* save_header_down=header_path.c_str(); const char* save_path_down = save_path.c_str(); CURL *curl; FILE* fp; FILE* headf; std::string bufRead; CURLcode res; curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if (curl) { fp = fopen(save_path_down, "wb"); headf=fopen(save_header_down,"wb"); curl_easy_setopt(curl, CURLOPT_URL, url_down); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); curl_easy_setopt(curl,CURLOPT_HEADERDATA,headf); curl_easy_setopt(curl,CURLOPT_HEADERDATA,&bufRead); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); curl_easy_setopt(curl, CURLOPT_NOPROGRESS, false); curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, S_Progress); startTime = get_timestamp(); res = curl_easy_perform(curl); if (res == CURLE_OK) { LOGI("SDK: FILE DOWNLOADED!"); } else { LOGI("SDK:TRANFER FAILED!"); } fclose(fp); fclose(headf); curl_easy_cleanup(curl); LOGI("SDK:HEADER:%s",bufRead.c_str()); } },android,c++,eclipse,curl,java-native-interface,Android,C++,Eclipse,Curl,Java Native Interface,运行程序后使用方法downloadFile,字符串bufRead始终为空,im try open header.txt但文件没有任何内容,全部为空。任何人都可以帮助我如何将内容头http请求显示为字符串或txt文件。谢谢 您设置了两次CURLOPT_HEADERDATA。其中一个应该是CURLOPT_HEADERFUNCTION吗?@Galik CURLOPT_HEADERDATA一个用于将数据打印到header.txt,一个发送到string bufReadCURL不接受std::string

运行程序后使用方法downloadFile,字符串bufRead始终为空,im try open header.txt但文件没有任何内容,全部为空。任何人都可以帮助我如何将内容头http请求显示为字符串或txt文件。谢谢

您设置了两次CURLOPT_HEADERDATA。其中一个应该是CURLOPT_HEADERFUNCTION吗?@Galik CURLOPT_HEADERDATA一个用于将数据打印到header.txt,一个发送到string bufReadCURL不接受std::string,它只接受一个文件*,除非您使用回调函数。谢谢@Galik,我已经用这个函数解决了我的问题。顺便说一下,在需要修改的标题,并添加到下载。你可以告诉我用什么方法