• 3304阅读
  • 2回复

[提问]大家帮我看看这个代码对不对,能不能优化 [复制链接]

上一主题 下一主题
离线fghfghfgh
 

只看楼主 倒序阅读 楼主  发表于: 2013-07-16
关键词: 获取网页
大家好  我是个新手, 我 写了个 获取网页内容的类 getWebContent    ,我想写好以后 给别的采集类继承,专门去采集指定网站的内容


比如:baidunews类继承getWebContent的类,获取了网页内容,baidunews再对内容进行解析然后入库, 等等 .......


我的getWebContent    代码如下,大家帮我看看  是否可以优化:

文件
  1. #ifndef GETWEBCONTENT_H
  2. #define GETWEBCONTENT_H
  3. #include<QString>
  4. class getWebContent
  5. {    
  6. public:  
  7.     QString getContent(const QString& url);
  8. };
  9. #endif // GETWEBCONTENT_H


cpp文件
  1. #include "getwebcontent.h"
  2. #include <QNetworkAccessManager>
  3. #include <QNetworkReply>
  4. #include <QEventLoop>
  5. #include <QUrl>
  6. QString getWebContent::getContent(const QString& url)
  7. {
  8.     QNetworkAccessManager manager;
  9.         QEventLoop loop;
  10.            //发出请求
  11.            QNetworkReply *reply = manager.get(QNetworkRequest(QUrl(url)));
  12.            //请求结束并下载完成后,退出子事件循环
  13.            QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
  14.            //开启子事件循环
  15.         loop.exec();
  16.         QString code = reply->readAll();
  17.         return code;
  18. }



我也是新手,大家帮我看看 代码有没有什么低级错误


谢谢






离线XChinux

只看该作者 1楼 发表于: 2013-07-16
我记得在代码秀里我有发过一个json解析什么的,用的就是QNetworkAccessManager,你看看。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线fghfghfgh

只看该作者 2楼 发表于: 2014-10-16
贴一个可用的 请求网页内容的代码


  1. QString myclass::getcontent(const QString& P4pUrl){
  2. QString data="&y=129&z=123";
  3.     QEventLoop eventLoop;  // "quit()" the event-loop, when the network request "finished()"
  4.     QNetworkAccessManager mgr;
  5.     QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));  // the HTTP request
  6. QNetworkRequest req( QUrl( QString("http://192.168.0.11/?"+data) ) );
  7. QNetworkReply *reply = mgr.get(req); eventLoop.exec(); // blocks stack until "finished()" has been called
  8.     if (reply->error() == QNetworkReply::NoError) { //success
  9.         QString replyData=reply->readAll();
  10.         qDebug() << "Success" <<replyData;
  11.         delete reply;
  12.         return replyData;
  13.     } else { //failure
  14.         qDebug() << "Failure" <<reply->errorString();
  15.         delete reply;
  16.         return "Error";
  17.     }
  18. }


快速回复
限100 字节
 
上一个 下一个