2012-11-26 2 views
6

を使用してサーバーにQt5のポスティングデータは、私が4.8で働いていたコードの部分を持っていますが、今、私はポートに必要なことは
これが起こるはずです:
私はいくつかのデータを投稿したいです(http://server/actions.php) 私のフィールド( "アクション"文字列と "データ"文字列(json))は、ポストを使用してサーバーに送信する必要があります。私は最初の場所でこの権利をやっていない可能性があり、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()); 

今URLにエンコードされていない、「(これは、4.8で働いていた)が、本当の問題はaddEncodedQueryItemとaddQueryItemは今Qt5ので、なくなっていることにあると私はドン私はそれらを何に置き換えるべきかを知っている。
私は新しいドキュメントを読んで新しいQUrlQueryを見ましたが、私の場合はこれをどのように使うべきか私自身は理解できませんでした。

答えて

3

は、私は同様の問題に直面し、

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); 

が、あなたがPOSTデータをエンコードQt5

1

Qt5には、メソッドがありません。わかりませんが、ドキュメントでは代わりにQUrl::query()メソッドを使用して動作する可能性があります。

希望します。

0

QUrlQuery()助けを使用してHTTPのPOST値を送信するようにコードを書き換えることに有用であるかもしれないホープQt5に次のコードの似を使用しました。
PyQtの例5.4:

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