2012-11-26 17 views
6

का उपयोग कर रहा कोड है कि 4.8 में काम का एक टुकड़ा है, लेकिन सर्वर से Qt5 पोस्टिंग डेटा अब मैं Qt5 (beta2) के लिए यह बंदरगाह की जरूरत है
यह क्या होने चाहिए:
मैं कुछ डेटा पोस्ट करना चाहते हैं एक वेबसर्वर को यूआरएल इस "http: //server/actions.php" जैसा दिखना चाहिए, फिर मेरे फ़ील्ड (एक "एक्शन" -स्ट्रिंग और "डेटा" स्ट्रिंग (जेसन)) पोस्ट का उपयोग कर सर्वर पर भेजी जानी चाहिए। URL में एन्कोडेड नहींQUrl/QNetworkRequest

QUrl params; 
// The data to post 
QVariantMap map; 

map["Title"]="The title"; 
map["ProjectId"]="0"; 
map["Parent"]="0"; 
map["Location"]="North pole"; 
map["Creator"]="You"; 
map["Group"]="a group"; 
QByteArray data = Json::serialize(map); //the map is converted to json im a QByteArray 

params.addEncodedQueryItem("Data",data); 
params.addQueryItem("Action", "Update"); 

QNetworkRequest Request(QUrl("http://server.com/actions.php")); 
Request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); 
NetManager->post(Request,params.encodedQuery()); 

अब, मैं पहली जगह में इस अधिकार कर नहीं किया जा सकता है, (यह 4.8 में काम किया), लेकिन असली समस्या यह है कि addEncodedQueryItem और addQueryItem अब Qt5 के बाद से चले गए हैं और मैं डॉन ' मुझे नहीं पता कि मुझे उन्हें किस जगह से बदलना चाहिए।
मैंने नए दस्तावेज़ पढ़े हैं और नया QUrlQuery देखें लेकिन मैं अपने मामले में इसका उपयोग करने के तरीके पर खुद को समझ नहीं पाया।

उत्तर

3

मैं इसी तरह की समस्या का सामना करना पड़ा और Qt5 में निम्नलिखित

QUrl url; 
QByteArray postData; 

url.setUrl("http://myurl...."); 
QNetworkRequest request(url); 
request.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded"); 

Qstring postKey = 'city'; 
QString postValue = 'Brisbane'; 

postData.append(postKey).append("=").append(postValue).append("&");   
networkManager.post(request,postData); 

आशा है कि यह Qt5

1

Qt5 में अब QUrl::encodedQuery() विधि नहीं है। निश्चित नहीं है, लेकिन प्रलेखन से यह QUrl::query() विधि का उपयोग कर काम कर सकता है।

उम्मीद है कि यह मदद करता है।

0

QUrlQuery() में मदद करता है का उपयोग कर आप पोस्ट डेटा सांकेतिक शब्दों में बदलना http पोस्ट मूल्यों भेजने के लिए अपने कोड के पुनर्लेखन के लिए उपयोगी हो सकता है के लिए कोड समान इस्तेमाल किया ।
पीईक्यूटी 5.4 में उदाहरण:

params = QtCore.QUrlQuery() 
params.addQueryItem("username", "Вагиф Plaît") 
reply = QtNetwork.QNetworkAccessManager().post(request, params.toString(QtCore.QUrl().FullyEncoded))