Per gestire le comunicazioni web della propria applicazione viene usata la classe QNetworkAccessManager.
Questa classe possiede ovviamente i metodi necessari per effettuare richieste di tipo GET, POST, PUT e HEAD, ovvero tutto il necessario per gestire con comodità la maggior parte delle comunicazioni via HTTP.
In particolare il metodo post è così definito:
QNetworkReply * post ( const QNetworkRequest & request, const QByteArray & data )
Curiosamente però, volendolo usare è necessario comporre manualmente il parametro data che, come sappiamo, risulta essere una lista di coppie chiave=valore separate dalla e commerciale &.
Può quindi risultare utile una funzione come questa:
QByteArray NetworkAccessManager::postDataEncoding(ParamHash hash)
{
QStringList list;
QHashIterator i(hash);
while (i.hasNext()) {
i.next();
list << i.key()+"="+QUrl::toPercentEncoding(i.value());
}
return list.join("&").toUtf8();
}
dove ParamHash è semplicemente un hash di stringhe definito in questa maniera:
typedef QHash<QString, QString> ParamHash;