Funzione per la codifica dei dati da inviare via HTTP POST

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;

One thought on “Funzione per la codifica dei dati da inviare via HTTP POST

Leave a Reply

Your email address will not be published. Required fields are marked *