0
이 문서의 내용을 잘 읽고 있습니다. http://developer.nokia.com/community/wiki/Creating_an_HTTP_network_request_in_Qt HTTP 연결을 구현하려고 시도했지만 코드가 오류없이 컴파일되지만 프로그램이 시작될 때 충돌이 발생합니다.QNetworkAccessManager가 실패합니다.
//coreeng.cpp
#include "coreeng.h"
#include <QNetworkAccessManager>
#include <QUrl>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QImageReader>
coreEng::coreEng(QObject *parent) :
QObject(parent)
{
}
void coreEng::connect(){
QObject::connect(nam, SIGNAL(finished(QNetworkReply*)),
this, SLOT(finishedSlot(QNetworkReply*)));
}
void coreEng::url(){
QUrl url("http://www.forum.nokia.wiki");
QNetworkReply* reply = nam->get(QNetworkRequest(url));
}
void coreEng::finishedSlot(QNetworkReply* reply){
QVariant statusCodeV = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
QVariant redirectionTargetUrl = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
if (reply->error() == QNetworkReply::NoError)
{
QImageReader imageReader(reply);
QImage pic = imageReader.read();
QByteArray bytes = reply->readAll(); // bytes
QString string(bytes); // string
}
else
{
}
delete reply;
}
//coreeng.h
#ifndef COREENG_H
#define COREENG_H
#include <QObject>
#include <QNetworkAccessManager>
class coreEng : public QObject
{
Q_OBJECT
public:
explicit coreEng(QObject *parent = 0);
private slots:
public slots:
void connect();
void url();
void finishedSlot(QNetworkReply* reply);
private:
QNetworkAccessManager* nam;
};
#endif // COREENG_H
당신은 당신의 C++ 코드에 더 많은 관심을 기울여야한다
#include <QCoreApplication>
#include "coreeng.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
coreEng mConnect;
mConnect.connect();
return a.exec();
}
답장을 보내 주셔서 감사합니다. 이런 뜻이야? 명시 적 coreEng (QObject * 부모 = 0) { QNetworkAccessManager * nam; } – brad
아니요. 이렇게하면 생성자의 수명에 제한된 스택에 로컬 변수가 만들어집니다. 'nam = new QNetworkAccessManager();와 같은 것이 그것입니다. 모든 일련의 질문을 토대로 C++ 과정을 고려할 수 있습니다. –
@brad, 내 업데이트 된 답변을 참조하십시오. –