2010-03-12 14 views
11

Estoy pensando en una simple aplicación de Java (línea de comandos) que se conecta a Internet para descargar un archivo XML, el problema es que mi Ubuntu está usando un proxy para conectarse a internet con nombre de usuario y contraseña (a través del http_proxy ="http://<username>:<pwd>@<ip>:<port>"). Entonces mi pregunta es, ¿podría ser posible escribir una aplicación java para usar la variable http_proxy? En lugar de configurar programáticamente HTTP proxy y host en cada aplicación, escribiré.Aplicación Java detrás del proxy para usar la variable http_proxy en linux

Respuesta

6

Con una JVM actual puede pasar el servidor proxy y el puerto utilizando propiedades de Java

java -Dhttp.proxyHost=webcache.mydomain.com -Dhttp.proxyPort=8080 -Dhttp.noProxyHosts=”localhost|host.mydomain.com” GetURL 

Ver http://java.sun.com/javase/6/docs/technotes/guides/net/proxies.html

+2

nombre de usuario y contraseña ejemplos http://www.rgagnon.com/javadetails/java-0085 .html http://www.developer.com/java/other/article.php/1551421/Questions-on-HttpURLConnection-and-Proxies.htm – EGHM

1

Por nombre de usuario y contraseña, ¿qué pasa con:

-Dhttp.proxyUser=username -Dhttp.proxyPassword=supersecret 
17

No hay que olvidar la cáscara _JAVA_OPTIONS variables

export _JAVA_OPTIONS='-Dhttp.proxyHost=cache.com -Dhttp.proxyPort=3128' 

Para más propiedades se ven aquí: http://mindprod.com/jgloss/properties.html

+1

No olvide que [HTTPS tiene sus propias propiedades] (https://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html) que Roedy no menciona. –

6

Se puede utilizar esta secuencia de comandos para el entorno automático que pasa a la aplicación java

Esta es una secuencia de comandos inteligente, si habilita la sección nmap, está detectando el estado de proxy hacia arriba o hacia abajo, si está activo, está utilizando el proxy si está inactivo. Usa conexión directa ...

script que puede conectar su aplicación con los ajustes de medio ambiente o sobrescribir ambiente o con servicio de proxy por el método de detección, la aplicación selecciona el modo directo o proxy de

Ésta es una conexión fiesta shell script inteligente

descontado que le decimos si no se habilita sección arriba/abajo del servicio nmap, este es un entorno de proxy simple o su valor de sobrescritura para su aplicación

Se está produciendo la línea de comandos de conexión de proxy automaticamente a continuación, ejecutar la aplicación Java

Este es el código del script:

#!/bin/bash 
# Author : Kerim BASOL 
# Twitter : http://twitter.com/kerimbasol 
# URL : http://kerimbasol.com 
# Version : 0.1 
# Java Proxy support script 
# You can use with GNU License 

# Which is your runtime jar file 
# Please change this as your application's needs 
JARFILE="myapp.jar" 

#Automaticly import system proxy settings 
if [ -n "$http_proxy" ] ; then 
    echo $http_proxy | grep "@" 
    if [ $? -eq 0 ]; then # If variable has username and password, its parse method different 
    PROXY_HOST=$(echo $http_proxy | sed 's/http:\/\/.*@\(.*\):.*/\1/') 
    PROXY_PORT=$(echo $http_proxy | sed 's/http:\/\/.*@.*:\(.*\)/\1/' | tr -d "/") 
    USERNAME=$(echo $http_proxy | sed 's/http:\/\/\(.*\)@.*/\1/'|awk -F: '{print $1}') 
    PASSWORD=$(echo $http_proxy | sed 's/http:\/\/\(.*\)@.*/\1/'|awk -F: '{print $2}') 
    else # If it doesn't have username and password, its parse method this 
    PROXY_HOST=$(echo $http_proxy | sed 's/http:\/\/\(.*\):.*/\1/') 
    PROXY_PORT=$(echo $http_proxy | sed 's/http:\/\/.*:\(.*\)/\1/' | tr -d "/") 
    fi 
fi 

# If you want to overwrite system proxy settings 
# uncomment these lines as your wish 
#PROXY_HOST="127.0.0.1" 
#PROXY_PORT="3128" 
#USERNAME="kerimbasol" 
#PASSWORD="deneme" 

# Display usage 
if [ $# -gt 0 ] ; then 
    if [ $1 = "--help" ] ; then 
      echo "$0 [<proxy-server> <proxy-port> [<username> <password> ] ] " 
      exit 0 
    fi 
fi 

# Command line proxy pass 
if [ $# -gt 1 ] ; then 
    PROXY_HOST=$1 
    PROXY_PORT=$2 
    if [ $# -gt 3 ] ; then 
      USERNAME=$3 
      PASSWORD=$4 
    fi 
fi 

# If you want to use this feature , enables and disables proxy support for proxy service up or down status 
# uncomment these line, if you installed nmap 
# at ubuntu system you can type this command for this future 
# sudo apt-get install nmap 
#STATUS=$(nmap -sT $PROXY_HOST -p $PROXY_PORT 2>/dev/null| grep open |awk '{print $2}') 
#if [ "$STATUS" != "open" ]; then # If service isn't running, disable proxy support 
# PROXY_HOST="" 
# PROXY_PORT="" 
#fi 

CMD="java -cp." 
if [ -n "$PROXY_HOST" -a -n "$PROXY_PORT" ] ; then 
    CMD="java -cp . -Dhttp.proxyHost=$PROXY_HOST -Dhttp.proxyPort=$PROXY_PORT" 
    if [ -n "$USERNAME" -a -n "$PASSWORD" ]; then 
    CMD="$CMD -Dhttp.proxyUser=$USERNAME -Dhttp.proxyPassword=$PASSWORD" 
    fi 
fi 

# If you want , change this line as your application wish ;) 
CMD="$CMD -jar $JARFILE" 

eval $CMD 
Cuestiones relacionadas