[1294] | 1 | /* -------------------------------------------------------------------------
|
---|
| 2 | * BKG NTRIP Client
|
---|
| 3 | * -------------------------------------------------------------------------
|
---|
| 4 | *
|
---|
| 5 | * Class: bncNetRequest
|
---|
| 6 | *
|
---|
| 7 | * Purpose: Prepare and submit network request
|
---|
| 8 | *
|
---|
| 9 | * Author: L. Mervart
|
---|
| 10 | *
|
---|
| 11 | * Created: 09-Dec-2008
|
---|
| 12 | *
|
---|
| 13 | * Changes:
|
---|
| 14 | *
|
---|
| 15 | * -----------------------------------------------------------------------*/
|
---|
| 16 |
|
---|
| 17 | #include <iostream>
|
---|
| 18 | #include <iomanip>
|
---|
| 19 |
|
---|
| 20 | #include "bncnetrequest.h"
|
---|
| 21 |
|
---|
| 22 | using namespace std;
|
---|
| 23 |
|
---|
| 24 | #define AGENTVERSION "1.7"
|
---|
| 25 |
|
---|
| 26 | // Constructor
|
---|
| 27 | ////////////////////////////////////////////////////////////////////////////
|
---|
| 28 | bncNetRequest::bncNetRequest() {
|
---|
| 29 | _manager = 0;
|
---|
| 30 | _reply = 0;
|
---|
| 31 | }
|
---|
| 32 |
|
---|
| 33 | // Destructor
|
---|
| 34 | ////////////////////////////////////////////////////////////////////////////
|
---|
| 35 | bncNetRequest::~bncNetRequest() {
|
---|
| 36 | delete _reply;
|
---|
| 37 | delete _manager;
|
---|
| 38 | }
|
---|
| 39 |
|
---|
| 40 | // Network Request
|
---|
| 41 | ////////////////////////////////////////////////////////////////////////////
|
---|
| 42 | t_irc bncNetRequest::request(const QUrl& mountPoint, const QByteArray& ggaStr) {
|
---|
| 43 |
|
---|
| 44 | // Network Access Manager
|
---|
| 45 | // ----------------------
|
---|
| 46 | if (_manager == 0) {
|
---|
| 47 | _manager = new QNetworkAccessManager(this);
|
---|
| 48 | }
|
---|
| 49 | else {
|
---|
| 50 | return failure;
|
---|
| 51 | }
|
---|
| 52 |
|
---|
| 53 | // Proxy
|
---|
| 54 | // -----
|
---|
| 55 | QSettings settings;
|
---|
| 56 | QString proxyHost = settings.value("proxyHost").toString();
|
---|
| 57 | if (proxyHost.isEmpty()) {
|
---|
| 58 | QNetworkProxy proxy(QNetworkProxy::NoProxy);
|
---|
| 59 | _manager->setProxy(proxy);
|
---|
| 60 | }
|
---|
| 61 | else {
|
---|
| 62 | QNetworkProxy proxy(QNetworkProxy::Socks5Proxy);
|
---|
| 63 | proxy.setHostName(proxyHost);
|
---|
| 64 | proxy.setPort(settings.value("proxyPort").toInt());
|
---|
| 65 | _manager->setProxy(proxy);
|
---|
| 66 | }
|
---|
| 67 |
|
---|
| 68 | connect(_manager, SIGNAL(finished(QNetworkReply*)),
|
---|
| 69 | this, SLOT(slotReplyFinished(QNetworkReply*)));
|
---|
| 70 |
|
---|
| 71 | // Network Request
|
---|
| 72 | // ---------------
|
---|
| 73 | QNetworkRequest request;
|
---|
| 74 | request.setUrl(mountPoint);
|
---|
| 75 | request.setRawHeader("User-Agent", "NTRIP BNC/" AGENTVERSION);
|
---|
| 76 | request.setRawHeader("Host", mountPoint.host().toAscii());
|
---|
| 77 |
|
---|
| 78 | QString uName = QUrl::fromPercentEncoding(mountPoint.userName().toAscii());
|
---|
| 79 | QString passW = QUrl::fromPercentEncoding(mountPoint.password().toAscii());
|
---|
| 80 | if (!uName.isEmpty() || !passW.isEmpty()) {
|
---|
| 81 | QByteArray userAndPwd = "Basic " + (uName.toAscii() + ":" +
|
---|
| 82 | passW.toAscii()).toBase64();
|
---|
| 83 | request.setRawHeader("Authorization", userAndPwd);
|
---|
| 84 | }
|
---|
| 85 |
|
---|
| 86 | if (!ggaStr.isEmpty()) {
|
---|
| 87 | request.setRawHeader("", ggaStr);
|
---|
| 88 | }
|
---|
| 89 |
|
---|
| 90 | // Submit Request
|
---|
| 91 | // --------------
|
---|
| 92 | _reply = _manager->get(request);
|
---|
| 93 |
|
---|
| 94 | connect(_reply, SIGNAL(readyRead()), this, SLOT(slotReadyRead()));
|
---|
| 95 |
|
---|
| 96 | connect(_reply, SIGNAL(error(QNetworkReply::NetworkError)),
|
---|
| 97 | this, SLOT(slotError(QNetworkReply::NetworkError)));
|
---|
| 98 |
|
---|
| 99 | connect(_reply, SIGNAL(sslErrors(QList<QSslError>)),
|
---|
| 100 | this, SLOT(slotSslErrors(QList<QSslError>)));
|
---|
| 101 |
|
---|
| 102 | return success;
|
---|
| 103 | }
|
---|
| 104 |
|
---|
| 105 | //
|
---|
| 106 | ////////////////////////////////////////////////////////////////////////////
|
---|
| 107 | void bncNetRequest::slotReplyFinished(QNetworkReply*) {
|
---|
| 108 | cout << "slotReplyFinished" << endl;
|
---|
[1296] | 109 | this->deleteLater();
|
---|
[1294] | 110 | }
|
---|
| 111 |
|
---|
| 112 | //
|
---|
| 113 | ////////////////////////////////////////////////////////////////////////////
|
---|
| 114 | void bncNetRequest::slotReadyRead() {
|
---|
| 115 | cout << "slotReadyRead" << endl;
|
---|
| 116 | QByteArray buffer = _reply->readAll();
|
---|
| 117 | cout << buffer.data();
|
---|
| 118 | }
|
---|
| 119 |
|
---|
| 120 | //
|
---|
| 121 | ////////////////////////////////////////////////////////////////////////////
|
---|
| 122 | void bncNetRequest::slotError(QNetworkReply::NetworkError) {
|
---|
| 123 | cout << "slotError " << _reply->error() << endl
|
---|
| 124 | << _reply->errorString().toAscii().data() << endl;
|
---|
| 125 | }
|
---|
| 126 |
|
---|
| 127 | //
|
---|
| 128 | ////////////////////////////////////////////////////////////////////////////
|
---|
| 129 | void bncNetRequest::slotSslErrors(QList<QSslError>) {
|
---|
| 130 | cout << "slotSslError" << endl;
|
---|
| 131 | }
|
---|
| 132 |
|
---|