我想获取网页的源(HTML),例如stackoverflow的主页. 这是我到目前为止编码的内容: QNetworkAccessManager manager; QNetworkReply *response = manager.get(QNetworkRequest(QUrl(url))); QString html = response->readAll(); // Source should be stored here 但是什么都没有发生!当我尝试获取html字符串的值时,它是空的(""). 那么,该怎么办?我正在使用QT 5.3.1. 解决方案 您必须在. 之间添加qeventloop QNetworkAccessManager manager; QNetworkReply *response = manager.get(QNetworkRequest(QUrl(url))); QEventLoop event; connect(respon
以下是关于 qnetworkaccessmanager 的编程技术问答
我正在使用QT 4.6.3和以下不工作代码 QStringList userInfo; QNetworkRequest netRequest(QUrl("http://api.stackoverflow.com/1.1/users/587532")); QNetworkReply *netReply = netman->get(netRequest); // from here onwards not working netReply->waitForReadyRead(-1); if (netReply->isFinished()==true) {userInfo
有一个应用程序,我有一个qobjects,其中都包含qnetworkAccessManager.我知道这只建议仅在每个应用程序上使用,但是由于我在同时进行6个电话要多,所以我需要这样.因此,这就是我启动线程的方式. FileUploader *fileUploader = new FileUploader(_fileList); QThread *fileUploaderThread = new QThread(); fileUploader->moveToThread(fileUploaderThread); // uploader > model connect(fileUploader, SIGNAL(progressChangedAt(int)), _model, SLOT(reportProgressChanged(int)), Qt::QueuedConnection); connect(fileUploader, SIGNAL(statusChangedAt(int
一个非常基本的问题.该文档提到QNetworkAccessManager中的所有方法都是重新进入的.如果是这样,是否在QRunnable中执行get()方法是不合法的吗?我的代码看起来像这样: class MyClass: public QRunnable { void run() { ... QNetworkAccessManager nam; QNetworkReply* reply = name.get(request) // No Read-write lock. ... } }; 解决方案 来自 qt文档: [...]如果可以同时[同时],则说一个类是 rectrant 只要每个线程使用不同的实例,请从多个线程安全地调用 课程. 由于您每次都使用其他实例(您在run()中的堆栈中创建的实例),因此您处在安全的一面. 其他解决方案 作为此的旁注,如果您只
我一直在尝试这一天,没有成功.请帮助解决该问题.在谷歌搜索时,我发现许多用户遇到了这个问题,但是我找不到解决方案. 我正在尝试在QT C ++中执行HTTP帖子,我已经尝试在Python 中尝试过(我的问题不是Python问题,所以QT Pros请帮助)..我知道,我知道,我在处理饼干和所有方面是错误的,所以请帮忙.请提供可能的解决方案. 在Python中,代码干净整洁.我已经剥离了错误处理和所有额外的东西,以使其变得简单. url = 'http://www.example.com/' data = 'username=abc&password=passwd' cj = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) usock = opener.open(url, data) #>>>>>> NOW, I have the cookiejar
我正在尝试保存我的应用程序生成的cookie到磁盘位置,例如C:\Users\Username\AppData\Local\MyCompany\MyApp.我已经实现了一个WebView,并且已经完成了编码我简单的浏览器的最后一件事,最后要做的就是保存cookie. 我是可以qdebug()我从WebApp中获得的cookie,它们显示cookie的形成正确,但我是a)不确定要去哪里,b)b)b)不能100%确定如何制作该子类cookiejar类? 下面我在mainwindow构造函数中创建我的cookiejar对象 view = new QWebView(this); jar = new QNetworkCookieJar; view->page()->networkAccessManager()->setCookieJar(jar); 在我的回复插槽中,我可以看到答复中包含的cookie,我试图保存它,但没有发生任何事情,我没有收到运行时间错误.这里没有很多东西
我可以使用QNetworkCookieJar检索,存储和重新发出QNetworkManager的cookie.多个QNetworkAccessManager实例可以共享一个QNetworkCookieJar. 到目前为止,我已经使用了多个QNetworkAccessManager实例,每个课程一个(我需要阅读): 所以我可以在1..n QNetworkAccessManager实例上共享一个单例QNetworkCookieJar 或者最好只有一个单身人士QNetworkAccessManager在所有QNetworkRequest上共享一个jar. QNetworkAccessManager作为单个对象是否要走?文档说只有一个实例.所以我最好使用单身顿QNetworkAccessManager? 最合适的方法是什么? -------编辑------- kkoehne的答案从我能告诉的是正确的.这也是文档所说的.但是,尝试这种方法时,我注意到了2个问题:
我无法将网站加载到我的qwebview中,qnetworkreply正在向我返回错误:网络访问被禁用.从本地工程加载文件. 我正在使用QT5.有人知道为什么连接被禁用以及这条线如何影响这种情况: QNetworkProxyFactory::setUseSystemConfiguration(false); 我的ETH0连接正常工作,我能够ping任何网站. 解决方案 来自QT doc:calling setUseSystemConfiguration() overrides any application proxy or proxy factory that was previously set.,因此请小心不要在之前设置任何其他代理. 此外,如果要检查网络访问,则可以这样做: QNetworkAccessManager m_pManager; QNetworkConfigurationManager configManager; m_
我正在BB10中绘制图.地图分为瓷砖.在开始使用者给出了经度,纬度和缩放级别,并且在该坐标处显示地图.我通过使用qnetworkAccessManager进行HTTP请求来获得一个瓷砖.首先,下载了7x5瓷砖.但是问题是,当用户开始在屏幕上真正快速播放并继续这样做时,有时会在用户停止平移瓷砖后,以大延迟下载.每次用户都会铺设一些新图块以在屏幕上显示.现在,由于用户继续使用一段时间,因此QnetworkAccessManager有很多不必要的网络请求.我的猜测就是为什么瓷砖下载缓慢的原因.我尝试使用abort()方法中的qnetworkcessmanager的qnetoworkreply中流产,以解决不必要的请求.但是它仍然真的很慢.是否有其他方法可以实现我的尝试?谢谢. 解决方案 我个人认为问题是您正在建立太多不必要的连接. 通常,HTTP被认为是一种重加权方案.它是建立在TCP上的,因此需要建立三路握手和4向握手才能终止,而不是考虑生成和解析这些HTTP标头的时间.
我使用QNAM使用FTP协议来处理上传. 整个过程有效,但我有一个奇怪的行为: 这是我的方法: void ftp::uploadFile(const QString &origin, const QString &destination) { QUrl url("ftp://"+host+""+destination); url.setUserName(user); url.setPassword(pwd); url.setPort(21); localFile = new QFile(origin, this); if (localFile->open(QIODevice::ReadOnly)) { reply = nam->put(QNetworkRequest(url), localFile); QObject::connect(reply, SIGNAL(uploadProg
我正在尝试编写一个调用Web服务的应用程序.这是一个控制台应用程序,URL将作为命令行参数传递.我在Qt中搜索了http程序,并找到了此链接: qnetworkAccessmanager.html 这里有以下代码示例: QNetworkAccessManager *manager = new QNetworkAccessManager(this); connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*))); manager->get(QNetworkRequest(QUrl("http://qt-project.org"))); 现在,如果我将其粘贴到我的控制台应用程序中,在main中,我显然会得到构建错误,因为this不存在.我得到: invalid use of 'this' in non-member fun
我正在尝试实施基本的http连接 c:\ qt5 \ tools \ qtcreator \ bin \ minihttp \ main.cpp:10:错误:在" mtest'中,请求成员'test'in'mtest',该'mtest',该'coregeng()'coreeng()' mtest.test(); //main.cpp #include #include int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); coreEng mTest; mTest.Test(); return a.exec(); } //coreeng.h #ifndef COREENG_H #define COREENG_H #include #include #in
我有第一个QT应用程序正在开发中.这是用于网站消息的桌面客户端. QT文档说我只需要一个实例 qnetworkCessManager accross应用程序.但是我还读到,使用QT的单身人士并不是一个好主意.我如何在应用程序上制作一个 qnetworkAccessmanager 的实例? 另一个问题是如何在我调用 apihandler 函数时如何正确连接插槽? 例如,我有使用 apihandler 的 exippleapi 类在请求完成以更新消息列表之后,但从未打电话. exkpleapi.h ... #include "apihandler.h" class ExampleApi : public QObject { Q_OBJECT public: explicit ExampleApi(QObject *parent = 0); void updateMessagesList(); signals: public slot
我正在使用QT 4.7.4的QTNetwork编写VLC 2.0的HTTP访问模块.我的代码剪子如下: static int Open(vlc_object_t *p_this) { .... QNetworkAccessManager *nam = new QNetworkAccessManager; QNetworkReply *reply = nam->get(QNetworkRequest("http://stackoverflow.com/")); Q_ASSERT(reply); QEventLoop loop; connect(reply, SIGNAL(finished()), &loop, SLOT(quit()); connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), &loop, SLOT(quit())); connect(reply, SIGNAL(ready
我可以从服务器下载,但我无法上传.它上传文件,但是一个空文件. 这基本上是我在做的: QString filename="Data.txt"; QFile file( filename ); file.open(QIODevice::ReadWrite); file.write("HELLO") ; QUrl urlup("ftp://127.0.0.1/file.txt"); urlup.setPassword("123"); urlup.setUserName("user"); urlup.setPort(21); QNetworkAccessManager *nam = new QNetworkAccessManager; QNetworkRequest requp(urlup); nam->put(requp,&file); file.close(); 但是它不起作用;只是上传一个空文件. 解决方案 而不是127.0.0.1使用localhost
我正在尝试使用QT从以下URL下载HTML代码: 此URL将重新引导到 www.ncbi.nlm.nih.gov/nuccore/27884304 我尝试通过以下方式做到这一点,但我什么也没得到. 它适用于某些网页,例如www.google.com,但对于此NCBI页面而无效.有什么方法可以获取此页面?? QNetworkReply::NetworkError downloadURL(const QUrl &url, QByteArray &data) { QNetworkAccessManager manager; QNetworkRequest request(url); QNetworkReply *reply = manager.get(request); QEventLoop loop; QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit())
我有一个问题,试图使用qbobject派生类使用qnetworkAccessManager发送请求. 首先在我的构造函数中,我执行以下操作: QObject::connect( &mAccessManager, SIGNAL( finished( QNetworkReply* ) ), this, SLOT( requestFinished( QNetworkReply* ) ) ); 然后,当我希望发送请求时,我会执行以下操作: QNetworkRequest checkLogin( QUrl( address ) ); checkLogin.setHeader( QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded" ); mByteArray = QByteArray( "POST \"client\" : oxres" ); QNetworkReply* pReply
我试图让我的应用程序从URL下载文件,通常是EXE或JAR,但这并不是说这应该改变太大.我将所有这些都在线程中运行,但是我认为这不会有所作为(如果确实让我知道). so do_download是我的功能,可以创建管理器,设置URL和请求并执行get.然后,我尝试将完成的信号连接到插槽,将写入文件. void DownloadManager::Do_Download() { QNetworkAccessManager *netManager = new QNetworkAccessManager(this); QUrl url(install_mirror); //istall_mirror is the URL provided by user QNetworkRequest req(url); QNetworkReply *reply = netManager->get(req); connect(reply, SIGNAL(fi