2016-06-15 2 views
0

Ich schrieb ein Maven-Plugin, das Netzwerkaktivität durchführt. Wenn ich es ausführe, gebe ich Parameter ein, um zu signalisieren, dass es einen Proxy verwenden sollte.Java-Proxy scheint still zu versagen. Wie kann ich es laut ausfallen lassen?

mvn myplugin:goal -Dhttps.proxyHost=nonexistent-site.com -Dhttps.proxyPort=8000 

Auch wenn ich es auf einen nicht vorhandenen Proxy zeigen, ist es erfolgreich. Es scheint, den Proxy zu umgehen und den Netzwerkanruf direkt zu machen, wenn der Proxy schlecht ist. (das ist meine Theorie sowieso. Es könnte sein, dass ich nicht einmal den Proxy richtig setze)

Ich habe auch die Maven settings.xml bearbeitet und den schlechten Proxy-Host hinzugefügt, aber es schlägt auch im Hintergrund fehl.

Gleiche, wenn ich hinzufügen, die Parameter MAVEN_OPTS

Wie kann ich das Netzwerk Anruf fehlschlagen, wenn der Proxy schlecht ist?

+0

Hmm Ich habe gerade mit dem 'maven-dependency-plugin' den Befehl' mvn dependency: get -Dartifact = "log4j: log4j: 1.1.3" -Dhttps.proxyHost = nicht existierende-site.com -Dhttps.proxyPort = getestet 8000' und es hat versagt. Sind Sie sicher, dass Sie diese Proxy-Einstellungen in Ihrem Maven-Plugin verwenden? Könnten Sie seinen Code veröffentlichen? – Tunaki

+0

Ich habe gerade festgestellt, dass ich nicht sein kann. Ich verwende die com.mashape.unirest.http.Unirest-Bibliothek für meine Netzwerkaufrufe und vielleicht respektieren sie nicht die System-Proxy-Einstellungen, da es aussieht, als gäbe es eine API, um ein Proxy-Objekt zu setzen ... – kane

+1

Sieht aus wie es nicht 't ja: https://github.com/Mashape/unirest-java/issues/65 Sie müssen explizit einen Proxy festlegen. – Tunaki

Antwort

0

Ich habe gerade das Problem herausgefunden, dank @Tunaki.

Stellt die Bibliothek (com.mashape.unirest.http.Unirest) heraus, die ich verwendete, respektiert nicht die Java-Proxy-Einstellungen. Das Problem ist in den obigen Kommentaren von @ Tunaki dokumentiert/verlinkt.

Die Lektion hier ist, dass wenn Sie eine Netzwerkbibliothek verwenden, die nicht Teil der JDK ist, stellen Sie sicher, dass es die Java-Einstellungen respektiert. Im Fall Unirest hatte ich den Proxy manuell zu erstellen, wie so

HttpHost proxy = new HttpHost(System.getProperty("https.proxyHost") 
           , new Integer(System.getProperty("https.proxyPort"))); 
Unirest.setProxy(proxy); 

Ich bin nicht sicher, ob diese Frage oder wirklich jemand hilft beantworten. Ich werde es jetzt hier lassen, falls es zutrifft. Aber wenn jemand sagt, dass ich das löschen soll oder ich ein paar Downvotes bekomme, werde ich die Frage entfernen.

+0

Ich möchte auch darauf hinweisen, dass Unirest derzeit Proxy-Authentifizierung nicht unterstützt, so dass wahrscheinlich eine andere Bibliothek verwenden, wenn das für Sie wichtig ist https://github.com/Mashape/unirest-java/issues/103 – kane

Verwandte Themen