QHttp mit SOCKS5 Proxy

Alles rund um die Programmierung mit Qt
Antworten
chronos
Beiträge: 34
Registriert: 20. September 2005 09:17
Kontaktdaten:

QHttp mit SOCKS5 Proxy

Beitrag 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
Nassian
Beiträge: 126
Registriert: 20. Juni 2005 21:14

Beitrag 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
chronos
Beiträge: 34
Registriert: 20. September 2005 09:17
Kontaktdaten:

Beitrag 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
Nassian
Beiträge: 126
Registriert: 20. Juni 2005 21:14

Beitrag von Nassian »

Wenn der Proxy Username und Passwort verlangt, músst du sie natürlich angeben. Wenn nicht einfach leere Strings ("") übergeben.
chronos
Beiträge: 34
Registriert: 20. September 2005 09:17
Kontaktdaten:

Beitrag 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(............);
...........
Nassian
Beiträge: 126
Registriert: 20. Juni 2005 21:14

Beitrag von Nassian »

proxy.setApplicationProxy();
setApplicationProxy ist static, verwende es doch auch so:
QNetworkProxy::setApplicationProxy();

Funktioniert es nun?
chronos
Beiträge: 34
Registriert: 20. September 2005 09:17
Kontaktdaten:

Beitrag von chronos »

leider nicht
ich bekomme immer ein
connection refused (QHttp::getErrorString())
Nassian
Beiträge: 126
Registriert: 20. Juni 2005 21:14

Beitrag 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.
chronos
Beiträge: 34
Registriert: 20. September 2005 09:17
Kontaktdaten:

Beitrag 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.......
JeanLuc
Beiträge: 7
Registriert: 19. Februar 2007 08:52

Beitrag 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 ?
Antworten