source: ntrip/trunk/BNC/bncnetrequest.cpp@ 1296

Last change on this file since 1296 was 1296, checked in by mervart, 15 years ago

* empty log message *

File size: 3.6 KB
Line 
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
22using namespace std;
23
24#define AGENTVERSION "1.7"
25
26// Constructor
27////////////////////////////////////////////////////////////////////////////
28bncNetRequest::bncNetRequest() {
29 _manager = 0;
30 _reply = 0;
31}
32
33// Destructor
34////////////////////////////////////////////////////////////////////////////
35bncNetRequest::~bncNetRequest() {
36 delete _reply;
37 delete _manager;
38}
39
40// Network Request
41////////////////////////////////////////////////////////////////////////////
42t_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////////////////////////////////////////////////////////////////////////////
107void bncNetRequest::slotReplyFinished(QNetworkReply*) {
108 cout << "slotReplyFinished" << endl;
109 this->deleteLater();
110}
111
112//
113////////////////////////////////////////////////////////////////////////////
114void bncNetRequest::slotReadyRead() {
115 cout << "slotReadyRead" << endl;
116 QByteArray buffer = _reply->readAll();
117 cout << buffer.data();
118}
119
120//
121////////////////////////////////////////////////////////////////////////////
122void bncNetRequest::slotError(QNetworkReply::NetworkError) {
123 cout << "slotError " << _reply->error() << endl
124 << _reply->errorString().toAscii().data() << endl;
125}
126
127//
128////////////////////////////////////////////////////////////////////////////
129void bncNetRequest::slotSslErrors(QList<QSslError>) {
130 cout << "slotSslError" << endl;
131}
132
Note: See TracBrowser for help on using the repository browser.