簡體   English   中英

如何在C ++ \\ wxWidgets中下載文件

[英]How to download a file in C++\wxWidgets

如何使用wxWidgets在C ++中下載文件?

被谷歌搜索,一切都沒有出現! 幫助贊賞!

為此使用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

取決於您要從何處“下載”它,以及文件服務器如何允許下載文件。 服務器可能使用FTP或HTTP,或其他更晦澀的東西。 無法從您的問題中分辨出其中沒有有用的信息。

通常,我不會將wxWidgets用於此任務。 wxWidgets是一個GUI框架,其中包含一些額外的功能,可能對您的情況沒有幫助。

Andrejs建議的HTTP到使用wxFTP FTP

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;
}

http://docs.wxwidgets.org/stable/wx_wxftp.html#wxftp

您沒有定義“下載文件”對您意味着什么。

如果要使用HTTP檢索某些內容,則應使用HTTP客戶端庫(如libcurl)並發出適當的HTTP GET請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM