如何使用wxWidgets在C ++中下载文件?
谷歌搜索,一切都没有出现!帮助赞赏!
答案 0 :(得分:6)
使用wxHTTP类。
wxHTTP示例代码:
#include <wx/sstream.h>
#include <wx/protocol/http.h>
wxHTTP get;
get.SetHeader(_T("Content-type"), _T("text/html; charset=utf-8"));
get.SetTimeout(10); // 10 seconds of timeout instead of 10 minutes ...
while (!get.Connect(_T("www.google.com")))
wxSleep(5);
wxApp::IsMainLoopRunning();
wxInputStream *httpStream = get.GetInputStream(_T("/intl/en/about.html"));
if (get.GetError() == wxPROTO_NOERR)
{
wxString res;
wxStringOutputStream out_stream(&res);
httpStream->Read(out_stream);
wxMessageBox(res);
}
else
{
wxMessageBox(_T("Unable to connect!"));
}
wxDELETE(httpStream);
get.Close();
如果您想要更灵活的解决方案,请考虑使用libcurl。
答案 1 :(得分:1)
取决于您要从哪里“下载”它,以及文件服务器如何允许下载文件。服务器可能使用FTP或HTTP,或更隐蔽的东西。没有办法从你的问题中说出哪些内容没有有用的信息。
一般情况下,我不会将wxWidgets用于此任务。 wxWidgets是一个GUI frmaework,有一些额外的东西,可能会或可能没有帮助你的情况。
答案 2 :(得分:1)
来自HTTP
Andrejs 建议,FTP
使用wxFTP
wxFTP ftp;
// if you don't use these lines anonymous login will be used
ftp.SetUser("user");
ftp.SetPassword("password");
if ( !ftp.Connect("ftp.wxwindows.org") )
{
wxLogError("Couldn't connect");
return;
}
ftp.ChDir("/pub");
wxInputStream *in = ftp.GetInputStream("wxWidgets-4.2.0.tar.gz");
if ( !in )
{
wxLogError("Coudln't get file");
}
else
{
size_t size = in->GetSize();
char *data = new char[size];
if ( !in->Read(data, size) )
{
wxLogError("Read error");
}
else
{
// file data is in the buffer
...
}
delete [] data;
delete in;
}
答案 3 :(得分:0)