Seite 1 von 1

QHttp mit SOCKS5 Proxy

Verfasst: 24. Juli 2006 14:16
von chronos
Hallo,

ich versuche gerade eine Verbindung über http und einem Proxy zu schaffen.
Allerdings wenn ich die funktion

QHttp::setProxy nehme bekomme ich immer einen Authentication Error.
Also entweder ist mein PW oder Username falsch (kann nicht sein)
oder der Proxy ist ein Socks5 Proxy der ja von QHttp nicht unterstützt wird.

Hat jemand eine Idee wie ich das ganze trotzdem zum laufen kriege?
Anscheinend muss man dann einen eigenen TCPSocket erstellen und mit QHttp::setSocket(...) zuordnen aber irgendwie will das nicht so wirklich.


mfg benjamin

Verfasst: 24. Juli 2006 21:14
von Nassian
Also erstmal vorweg, SOCKS5 Proxies werden von Qt (4) unterstützt -> QNetworkProxy.

Hmm, habe gerade QHttp im Assistant offen. Dort kann man nur Username, Passwort, Adresse und Port angeben, aber nicht den Typ. Ich würde mal versuchen ein QNetworkProxy zu erstellen und dann als Application default zu setzen (QNetworkProxy::setApplicationProxy( const QNetworkProxy & networkProxy )).

SG Alexander

Verfasst: 25. Juli 2006 14:42
von chronos
genau das hab ich schon versucht.
Aber leider ohne Erfolg. Ich bekomme leider auch keine Fehlermeldung oder sonstiges nud weiss leider auch nicht warum es nicht läuft.
Ich merke es immer nur daran das das programm die Files nicht uploaded.
Wenn ich den ProxyMode von QHttp nutze dann bekomme ich als Fehler das ich mich am Webservice anmelden muss. Allerdings habe ich Username und Passwort angegeben.
Wenn ich das ganze über QNetworkProxy mache bekomme ich überhaupt keine responce (so verhält es sich auch wenn ich keinen Proxy angebe) also ein timout.
ICh habe versucht das ganze über einen neuen QTcpSocket zu machen und diesen über QHttp::setSocket zuzuweisen aber damit habe ich keine Erfahrung auch hier timeout.....

mfg benjamin

Verfasst: 27. Juli 2006 15:58
von Nassian
Wenn der Proxy Username und Passwort verlangt, músst du sie natürlich angeben. Wenn nicht einfach leere Strings ("") übergeben.

Verfasst: 28. Juli 2006 10:41
von chronos
hab ich auch schon versucht
allerdings benötigt dieser Proxy username und pw....

ich glaube das ich noch irgendwas beachten muss wenn ich QHttp einen neuen QTcpSocket zuweise........
Was ich im Moment mache ist einen neuen Socket erstellen
dem Socket den Socks5 Proxy zuweisen
und den Socket an QHttp weiterreichen.

Jetzt mach ich ganz normal weiter.......

Code: Alles auswählen

proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy,strHost,iPort,strUser,strPw);

#ifdef USE_SPEC_SOCKET_PROXY
//---- use specific socket for proxy
sock = new QTcpSocket();
sock->setProxy(proxy);
http.setSocket(sock);

#else
//---- use application proxy
proxy.setApplicationProxy(proxy);
#endif

http.setURI(............);
...........

Verfasst: 28. Juli 2006 11:37
von Nassian
proxy.setApplicationProxy();
setApplicationProxy ist static, verwende es doch auch so:
QNetworkProxy::setApplicationProxy();

Funktioniert es nun?

Verfasst: 28. Juli 2006 12:07
von chronos
leider nicht
ich bekomme immer ein
connection refused (QHttp::getErrorString())

Verfasst: 28. Juli 2006 17:48
von Nassian
Connection refused hört sich stark danach an, dass nichteinmal der Socket Connect funktioniert, also es noch gar nicht zur Kommunikation mit der Proxy Software gekommen ist. Prüfe doch mal Proxy IP und Port und ob die Proxy Software überhaupt läuft.

Verfasst: 2. August 2006 09:18
von chronos
Okay ich werde es mal testen ... erst mal danke für deine hilfe sollte ich es irgendwie hinkriegen poste ich hier wie es funktioniert.......

Verfasst: 30. März 2007 15:09
von JeanLuc
ich hab glaub das gleiche problem, wenn ich zu servern im internet connecte.

Code: Alles auswählen

mpQTcpSocket = new QTcpSocket(this);
mpQNetworkProxy = new QNetworkProxy(QNetworkProxy::DefaultProxy, host, port);

mpQTcpSocket->setProxy(*mpQNetworkProxy);
mpQTcpSocket->connectToHost( host, port);

int state1 = mpQTcpSocket->state();
mpQTcpSocket->waitForConnected(2000); //2sekunden timeout
int state2 = mpQTcpSocket->state();
state 1 ist QAbstractSocket::HostLookupState
state 2 ist QAbstractSocket::UnconnectedState

also das connecten funktioniert nicht.

gab es da inzwischen ein lösung?
bzw. hat da jemand ne idee ?