QNetworkAccessManager和QHttp比较

QNetworkAccessManager和QHttp比较

在Qt中QNetworkAccessManager主要用于复杂情况下的QWebView使用,比如存在代理服务器的情况。

QNetworkAccessManager也提供类似QHttp的Get方法。
于是我想当然的认为QNetworkAccessManager能够比QHttp更方便的获取网络资源。然而一个简单的例子伤了我的心:

下载部分代码如下:

 

QByteArray &  Download::download( const  QString  & url)
{
    m_finished 
= false;
    m_manager
->get(QNetworkRequest(QUrl(url)));
    
while (!m_finished)
        QApplication::instance()
->processEvents();
    
return m_result;
}

下载 http://www.g.cn/favicon.ico的返回结果如下:

< HTML >< HEAD >< meta  http-equiv ="content-type"  content ="text/html;charset=utf-8" >
< TITLE > 301 Moved </ TITLE ></ HEAD >< BODY >
< H1 > 301 Moved </ H1 >
The document has moved
< HREF ="http://www.google.cn/favicon.ico" > here </ A > .

</ BODY ></ HTML >

 也就是QNetworkAccessManager仅处理简单的一次交互,完整的交互过程需要用户实现。

虽然统一使用QNetworkAccessManager能够在技术上保持平滑一致。
我还是不得不区别对待两种情况下的网络访问——同时使用QHttp和QNetworkAccessManager

你可能感兴趣的:(QNetworkAccessManager和QHttp比较)