2012-11-26 10 views
6

Mam kawałek kodu, który pracował w 4.8, ale teraz muszę portu go do Qt5 (beta2)
jest to, co powinno się zdarzyć:
chcę pisać niektóre dane na serwer internetowy adres URL powinien wyglądać tak: "http: //server/actions.php" Następnie moje pola (ciąg "Akcja" i ciąg "danych" (json)) powinny zostać wysłane na serwer za pomocą postu. Nie kodowane w urldane Qt5 delegowania do serwera przy użyciu 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()); 

Teraz nie można robić tego prawa w pierwszej kolejności (on pracował w 4.8), ale prawdziwym problemem jest to, że addEncodedQueryItem i addQueryItem są teraz odszedł od Qt5 i I don” t wiem, co powinienem je zastąpić.
Czytałem nowe dokumenty i widziałem nowe QUrlQuery, ale nie mogłem sam się zorientować, jak tego użyć w moim przypadku.

Odpowiedz

3

wychodził podobny problem i używane kod podobny do poniższego w 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); 

Nadzieja może być przydatna przepisać kod wysłać wartości HTTP POST przy użyciu Qt5

1

Qt5 nie ma już metody QUrl::encodedQuery(). Nie jestem pewien, ale z dokumentacji może to być metoda z użyciem metody QUrl::query().

Mam nadzieję, że to pomaga.

0

QUrlQuery() pomaga kodowania danych POST .
Przykład w PyQt 5.4:

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