Comment puis-je spécifier l'adresse locale sur java.net.URLConnection?
Mon Tomcat instance est à l'écoute de plusieurs adresses IP, mais je veux le contrôle de la source adresse IP est utilisée lors de l'ouverture d'un URLConnection
.
Comment puis-je indiquer?
source d'informationauteur stian
Vous devez vous connecter pour publier un commentaire.
Cela devrait faire l'affaire:
Et vous avez terminé.
N'oubliez pas de gérer des exceptions bien et bien sûr modifier les valeurs en fonction de votre scénario.
Ah et j'ai omis les déclarations d'importation
À l'aide de l'Apache commons HttpClient j'ai également constaté ce qui suit au travail (supprimé try/catch pour plus de clarté):
Cependant, je me demande encore ce qui se passerait si la porte d'entrée de la propriété intellectuelle qui est en bas (192.168.1.11 dans ce cas). La prochaine passerelle être jugé ou cela est-il un échec?
L'évidence portable serait de définir un Proxy dans l'URL.openConnection. La procuration peut être dans les locaux de l'hôte, vous pouvez alors écrire un très simple proxy qui lie l'adresse locale de la socket client.
Si vous ne pouvez pas modifier la source où l'URL est connecté, vous pouvez remplacer le URLStreamHandler soit lors de l'appel de l'URL constructeur ou à l'échelle mondiale par le biais de l'URL.setURLStreamHandlerFactory. Le URLStreamHandler peut ensuite déléguer à la valeur par défaut http/https gestionnaire, la modification de l'openConnection appel.
Une plus extrêmes méthode serait de remplacer complètement le gestionnaire (peut-être étendre la mise en œuvre de votre JRE). Sinon, la solution (open source) http des clients sont disponibles.
Manuellement le paramètre socket beau travail ...