1 #include "qrzlookup.h"
2 #include <QNetworkAccessManager>
3 #include <QNetworkReply>
4 #include <QUrlQuery>
5 #include <QHash>
6 #include <QXmlStreamReader>
7 
QRZLookup(QString un,QString pw)8 QRZLookup::QRZLookup(QString un, QString pw)
9 {
10     _username = un;
11     _password = pw;
12     _networkManager = new QNetworkAccessManager();
13     initialize();
14 }
15 
initialize()16 void QRZLookup::initialize() {
17         QUrlQuery query;
18         query.addQueryItem("username", _username);
19         query.addQueryItem("password", _password);
20         QUrl url(_url);
21         url.setQuery(query);
22         QNetworkRequest networkRequest(url);
23         connect(_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(setSessionKey(QNetworkReply*)));
24         _networkManager->get(networkRequest);
25 
26 }
27 
setSessionKey(QNetworkReply * r)28 void QRZLookup::setSessionKey(QNetworkReply *r) {
29     if(r->error() == QNetworkReply::NoError) {
30         QByteArray data = r->read(2048);
31         QXmlStreamReader reader(data);
32         while(!reader.atEnd() && !reader.hasError()) {
33             if(reader.readNext() == QXmlStreamReader::StartElement && reader.name() == "Key") {
34                _sessionKey = reader.readElementText();
35             }
36         }
37     }
38     r->deleteLater();
39 }
40 
lookup(QString dxCall)41 void QRZLookup::lookup(QString dxCall) {
42     QHash<QString, QString> hash;
43     QUrlQuery query;
44     query.addQueryItem("s", _sessionKey);
45     query.addQueryItem("callsign", dxCall);
46     QUrl url(_url);
47     url.setQuery(query);
48     QNetworkRequest networkRequest(url);
49     connect(_networkManager, SIGNAL(finished(QNetworkReply*)), MainWindow, SLOT(setSessionKey(QNetworkReply*)));
50     _networkManager->get(networkRequest);
51 }
52 
53 
54 
55 
56