Hi, Did anyone manage to send an FTP request through an HTTP caching proxy ?
Seems that sending an HTTP request works fine but it never works for FTP. Attached an example. I compiled it using: g++ -o p p.cc `pkg-config QtCore QtNetwork QtGui --cflags --libs` Using 4.4 RC1 Cheers, -- GPG-Key: 0xA3FD0DF7 - 9F73 032E EAC9 F7AD 951F 280E CB66 8E29 A3FD 0DF7 Debian User and Developer. Homepage: www.foolab.org
#include <qapplication.h>
#include <qnetworkproxy.h>
#include <qnetworkaccessmanager.h>
#include <qnetworkrequest.h>
#include <qnetworkreply.h>
#include <iostream>
class Req : public QObject {
Q_OBJECT
public:
Req() {
p.setHostName("172.16.42.42");
p.setPort(8080);
p.setType(QNetworkProxy::HttpCachingProxy);
m.setProxy(p);
QNetworkRequest rq1(QUrl("ftp://foolab.org"));
r1 = m.get(rq1);
QNetworkRequest rq2(QUrl("http://foolab.org"));
r2 = m.get(rq2);
QObject::connect(r1, SIGNAL(readyRead()), this, SLOT(r1Read()));
QObject::connect(r2, SIGNAL(readyRead()), this, SLOT(r2Read()));
}
private:
QNetworkAccessManager m;
QNetworkProxy p;
QNetworkReply *r1, *r2;
private Q_SLOTS:
void r1Read() {
qDebug() << "Request 1 " << r1->readAll();
}
void r2Read() {
qDebug() << "Request 2 " << r2->readAll();
}
};
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
Req r;
a.exec();
return 0;
}
// moc output:
/****************************************************************************
** Meta object code from reading C++ file 'p.cc'
**
** Created: Thu Apr 10 17:08:19 2008
** by: The Qt Meta Object Compiler version 59 (Qt 4.4.0-rc1)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'p.cc' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 59
#error "This file was generated using the moc from 4.4.0-rc1. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
static const uint qt_meta_data_Req[] = {
// content:
1, // revision
0, // classname
0, 0, // classinfo
2, 10, // methods
0, 0, // properties
0, 0, // enums/sets
// slots: signature, parameters, type, tag, flags
5, 4, 4, 4, 0x08,
14, 4, 4, 4, 0x08,
0 // eod
};
static const char qt_meta_stringdata_Req[] = {
"Req\0\0r1Read()\0r2Read()\0"
};
const QMetaObject Req::staticMetaObject = {
{ &QObject::staticMetaObject, qt_meta_stringdata_Req,
qt_meta_data_Req, 0 }
};
const QMetaObject *Req::metaObject() const
{
return &staticMetaObject;
}
void *Req::qt_metacast(const char *_clname)
{
if (!_clname) return 0;
if (!strcmp(_clname, qt_meta_stringdata_Req))
return static_cast<void*>(const_cast< Req*>(this));
return QObject::qt_metacast(_clname);
}
int Req::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QObject::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
switch (_id) {
case 0: r1Read(); break;
case 1: r2Read(); break;
}
_id -= 2;
}
return _id;
}
QT_END_MOC_NAMESPACE
signature.asc
Description: Digital signature
