2013-10-04 33 views
-1

我想發佈一些信息到PHP並從該PHP獲取結果。 我的帖子應該是這樣的:www.sample.com/test.php?un=user &通= 123345 我想,沒有成功的所有變體:QNetworkAccessManager正確使用

m_NetworkAccessMNGR = new QNetworkAccessManager(this); 
connect(m_NetworkAccessMNGR, SIGNAL(finished(QNetworkReply*)), 
     this,SLOT(slotFinishRequest(QNetworkReply*))); 
QNetworkRequest networkRequest; 
networkRequest.setUrl(QUrl("http://www.sample.com/test.php?un=user&pass=123345")); 

QNetworkReply *reply = m_NetworkAccessMNGR->get(networkRequest); 

connect(reply, SIGNAL(readyRead()), 
     this, SLOT(slotReadyRead())); 
connect(reply, SIGNAL(finished()), 
     this, SLOT(slotOnRequestCompleted())); 
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), 
     this, SLOT(slotOnRequestError(QNetworkReply::NetworkError))); 
connect(reply, SIGNAL(sslErrors(QList<QSslError>)), 
     this, SLOT(slotSslErrors(QList<QSslError>))); 

的代碼不執行任何這些插槽。
有沒有人有什麼問題有什麼ideea?
謝謝

+0

您是否注意到您在調用'QNetworkManager :: get'而不是'QNetworkManager :: post'? [Here](http://stackoverflow.com/questions/18439138/make-http-post-request-with-a-list-of-named-parameters-in-qt/18439557#18439557)是關於POST請求的問題與命名參數 – jbh

回答

4

你的代碼中有其他地方的事件循環嗎?

如果沒有,試試這個:

QEventLoop loop; 

m_NetworkAccessMNGR = new QNetworkAccessManager(this); 
QNetworkRequest networkRequest; 
networkRequest.setUrl(QUrl("http://www.sample.com/test.php?un=user&pass=123345")); 

QNetworkReply *reply = m_NetworkAccessMNGR->get(networkRequest); 

connect(reply, SIGNAL(readyRead()), 
     this, SLOT(slotReadyRead())); 
connect(reply, SIGNAL(finished()), 
     this, SLOT(slotOnRequestCompleted())); 
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), 
     this, SLOT(slotOnRequestError(QNetworkReply::NetworkError))); 
connect(reply, SIGNAL(sslErrors(QList<QSslError>)), 
     this, SLOT(slotSslErrors(QList<QSslError>))); 

connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); 
loop.exec(); 

這是否工作更好嗎?

+1

Yeap,與QEventLoop工作。 – Lucian