qt android 网络编程实例,【9】QT网络编程

在QT的网路模块中提供了网络编程的相关接口来实现http的访问,其中包含了一些低级的类:QTcpSocket、QTcpServer和QUdpSocket,和一些高级的类:QNetworkRequest、QNetworkReply和QNetworkAccessManager,我们现在主要使用这些高级的类来实现网页的获取。

实现简单网页获取

我们可以创建一个控制台程序来获取一些数据。主要是在这个文件中加入network,就可以进行网络编程了。

#qtspider.pro

QT += core network

QT -= gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

TARGET = qtspider

CONFIG += console

CONFIG -= app_bundle

TEMPLATE = app

SOURCES += main.cpp

HEADERS +=

//main.cpp

#include

#include

#include

#include

#include

#include

class qtspider:public QWidget

{

Q_OBJECT

public:

explicit qtspider(QWidget *parent = 0);

private slots:

void replyfinish(QNetworkReply *);

private:

QNetworkAccessManager *manager;

QString *content;

};

qtspider::qtspider(QWidget *parent)

{

content = new QString();

manager=new QNetworkAccessManager(this);

connect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(replyfinish(QNetworkReply *)));

manager->get(QNetworkRequest(QUrl("http://www.jianshu.com/c/RfYyQj")));

}

//这里使用正则表达式来从获取网页中得到我们需要的数据,这里写的比较简单。

void qtspider::replyfinish(QNetworkReply *reply)

{

QString result=reply->readAll();

QRegExp exp("(.*)");

exp.setMinimal(true);

int pos=0;

while((pos=exp.indexIn(result,pos))!=-1){

qDebug()<

qDebug() << exp.cap(1);

qDebug()<

pos += exp.matchedLength();

}

reply->deleteLater();

}

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

qtspider *spider=new qtspider();

return a.exec();

}

#include "main.moc"

最后这一段简单的代码获取的是简书散文主题当前页文章的标题,至于如何得到更多信息,还得研究一下,结果是这样的:

6947aefad5bd

2017-04-26_212823.png

错误:undefined reference to "vtable for xxx"

解决:在main.cpp的末尾加上

#include "main.moc"

另外,关于正则表达式,这里分享给大家一个关于正则表达式测试的工具:

http://regexpal.isbadguy.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值