使用 pocolibrary 下载二进制文件
Download binary file with pocolibrary
更新:
我通过将 istream_iterator 替换为 istreambuf_iterator.
来修复它
我尝试使用 poco 下载二进制文件。
似乎它没有正确加载文件,因为内容长度!=实际下载的长度。
Poco::Net::HTTPClientSession session(uri.getHost(), uri.getPort());
Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, uri.getPathAndQuery(), Poco::Net::HTTPMessage::HTTP_1_1);
Poco::Net::HTTPResponse response;
session.sendRequest(request);
std::istream& rs = session.receiveResponse(response);
int contentlen = response.getContentLength();
std::vector<char> bytes;
std::copy(std::istream_iterator<char>(rs), std::istream_iterator<char>(), std::back_inserter(bytes));
int byteslen = bytes.size();
这里的 contentlen=297008 和 byteslen=290420。
结果,下载的图像已损坏。
如果我使用 curl 下载图像,它可以完美运行,下载大小 = 297008。
怎么了?
提前致谢。
另见 download example:
std::auto_ptr<std::istream> pStr(URIStreamOpener::defaultOpener().open(uri));
StreamCopier::copyStream(*pStr.get(), std::cout);
更新: 我通过将 istream_iterator 替换为 istreambuf_iterator.
来修复它我尝试使用 poco 下载二进制文件。 似乎它没有正确加载文件,因为内容长度!=实际下载的长度。
Poco::Net::HTTPClientSession session(uri.getHost(), uri.getPort());
Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, uri.getPathAndQuery(), Poco::Net::HTTPMessage::HTTP_1_1);
Poco::Net::HTTPResponse response;
session.sendRequest(request);
std::istream& rs = session.receiveResponse(response);
int contentlen = response.getContentLength();
std::vector<char> bytes;
std::copy(std::istream_iterator<char>(rs), std::istream_iterator<char>(), std::back_inserter(bytes));
int byteslen = bytes.size();
这里的 contentlen=297008 和 byteslen=290420。 结果,下载的图像已损坏。 如果我使用 curl 下载图像,它可以完美运行,下载大小 = 297008。 怎么了? 提前致谢。
另见 download example:
std::auto_ptr<std::istream> pStr(URIStreamOpener::defaultOpener().open(uri));
StreamCopier::copyStream(*pStr.get(), std::cout);