2009-12-24 5 views
1

QNetworkManager를 사용하여 응용 프로그램을 작성하려고합니다. 나는 문제에 대한 코드를 단순화했다. 다음 코드는 응답, 나는 아무 생각도 이유 없다 :Qt4 QNetworkManager가 응답하지 않습니다.

MAIN.CPP :

#include <QApplication> 
#include "post.h" 

int main(int argc, char *argv[]) { 
    QApplication app(argc, argv); 
    post("http://google.com/search", "q=test"); 
    return app.exec(); 
} 

post.h :

#ifndef _H_POST 
#define _H_POST 

#include <QNetworkAccessManager> 
#include <QNetworkRequest> 

class post : public QObject { 
    Q_OBJECT 

    public: 
     post(QString URL, QString data); 

    public slots: 
     void postFinished(QNetworkReply* reply); 

    protected: 
     QNetworkAccessManager *connection; 

}; 

#endif 

post.cpp :

#include <QApplication> 
#include <QUrl> 
#include "post.h" 

post::post(QString URL, QString data) { 
    connection = new QNetworkAccessManager(this); 
    connect(connection, SIGNAL(finished(QNetworkReply*)), this, SLOT(postFinished(QNetworkReply*))); 
    connection->post(QNetworkRequest(QUrl(URL)), data.toAscii()); 
} 

void post::postFinished(QNetworkReply*) { 
    qApp->exit(0); 
} 

일부를 그것이 Qt에서 그것을 바꾸는 방법을 모릅니다 ... 네트워크 예제 중 하나는 sh 이런.

+0

연결 -> 게시 또는 app.exec에서 멈 춥니 다? –

+0

app.exec post :: postFinished가 호출되지 않는 것 같습니다 – singpolyma

+0

어떤 버전의 Qt를 실행하고 있습니까? –

답변

4

같은 결과로 시도해 보았습니다. 문제는 생성자를 호출하여 게시 객체를 생성한다는 것입니다. 당신이 바로 파괴지고 객체를 지정하지 않기 때문에 (이 소멸자를 생성하고이 호출 될 때 참조 확인합니다.)

시도 :

post p("http://google.com/search","q=test"); 

이 그런 다음 슬롯

을 호출되는합니다.

+0

그것은 유효한 포인터이고 -> rawHeaderList()는 빈리스트를 반환합니다. – singpolyma

+0

좋은 캐치 ... 나는 포스트를위한 클래스 코드에 도착하려고 애쓰는 부분을 완전히 빼먹었습니다. –

관련 문제