Qt5 отправка данных на сервер с помощью QUrl / QNetworkRequest
У меня есть фрагмент кода, который работал в 4.8, но теперь мне нужно перенести его в Qt5 (beta2)
Вот что должно произойти:
Я хочу отправить некоторые данные на веб-сервер, url должен выглядеть следующим образом "http://server/actions.РНР"
Затем мои поля ("Action" - string и" data " string (json)) должны быть отправлены на сервер с помощью post. Не закодировано в url
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);
Надеюсь, что будет полезно переписать код для отправки значений http post с помощью Qt5