Я думаю о простой Java-приложении (командной строке), которая подключается к Интернету для загрузки XML файла, проблема в том, что мой Ubuntu использует прокси для подключения к интернету с именем пользователя и паролем (через http_proxy ="http://<username>:<pwd>@<ip>:<port>"
), Поэтому мой вопрос: можно ли написать приложение java для использования переменной http_proxy
? Вместо того, чтобы программно устанавливать HTTP-прокси и хост в каждом приложении, я напишу.
Приложение Java за прокси для использования переменной http_proxy в Linux
Ответ 1
Не забывайте переменную оболочки _JAVA_OPTIONS
export _JAVA_OPTIONS='-Dhttp.proxyHost=cache.com -Dhttp.proxyPort=3128'
Подробнее о свойствах смотрите здесь: http://mindprod.com/jgloss/properties.html
Ответ 2
С помощью текущей JVM вы можете передать прокси-сервер и порт с помощью свойств Java
java -Dhttp.proxyHost=webcache.mydomain.com -Dhttp.proxyPort=8080 -Dhttp.noProxyHosts="localhost|host.mydomain.com" GetURL
См. http://java.sun.com/javase/6/docs/technotes/guides/net/proxies.html
Ответ 3
Вы можете использовать этот script для автоматического перехода в java-приложение
Это интеллектуальный script, если вы включаете раздел nmap, он обнаруживает статус прокси-сервера вверх или вниз, если он находится в состоянии, когда он использует прокси-сервер, если он отключен, он использует прямое соединение.
С помощью этого script вы можете подключить свое приложение с настройками окружения или перезаписывать среду или с помощью метода обнаружения прокси-сервиса, приложение выбирает прямой или прокси-режим
Это интеллектуальное соединение bash shell script
Ofcouse, если вы не включите службу вверх/вниз в nmap, это простая среда прокси-сервера или ваше значение перезаписи для вашего приложения.
Он создает автоматическую прокси-соединение, затем запускает ваше java-приложение
Это 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 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
Ответ 4
Для имени пользователя и пароля, как насчет:
-Dhttp.proxyUser=username -Dhttp.proxyPassword=supersecret
Ответ 5
в http://java.sun.com/javase/6/docs/technotes/guides/net/proxies.html нет команды пропустить имя пользователя и пароль прокси-сервера для JVM.