1、區域網訪問外網伺服器的代理java web系統怎麼實現?
問題簡化起來就是A->B->C的關系,即B(可以上外網的機器)作為代理層來轉發區域網內回的外網請求答。
舉個栗子,百度地圖。
在B上封裝下百度地圖API,然後向區域網內發布,這樣A之類的內網機器就可以通過B訪問百度地圖了。
class B {當然,具體問題具體分析,其他需求上的實現可能稍有不同,但思路就是這樣。
2、怎麼用java實現一個代理伺服器,需要支持htt
怎麼用java實現一個代理伺服器,需要支持htt
代理伺服器的應用非常廣泛。比如,在企業網內部,它可以用來控制員工在工作時瀏覽的Internet內容,阻止員工訪問某些類型的內容或某些指定的網站。代理伺服器實際上扮演著瀏覽器和Web伺服器之間的中間人的角色,能夠對瀏覽器請求進行各種各樣的處理,能夠過濾廣告和Cookie,能夠預先提取Web頁面,使得瀏覽器訪問頁面的速度更快,等等。
3、想用java編寫個代理伺服器,求具體一些思路,詳細一些,謝謝
在編寫代理伺服器之前,首先應該明白一點,Java的代理機制,如圖所示:
那麼Java就處於中間這層代理伺服器,代理伺服器所作的事情如下:
1、接收客戶端請求,進行處理,然後發送給服務端
2、接收服務端響應,進行處理,然後發送給客戶端
這樣,就更清晰了,Java提供了代理的API為,java.net.Proxy類。此類表示代理設置,通常為類型(http、socks)和套接字地址。Proxy 是不可變對象。
也就是說Java可以製作高級協議的代理,如 HTTP 或 FTP。也可以製作SOCKS(V4 或 V5)代理。
首先,使用到了URL類,HttpURLConnection類及其我們的代理類Proxy類。他們都位於java.net包中。
第一步:生成代理,指定埠為8888:
第二步:使用URLConnection類進行連接www.moonsos.com
第三步:打開URL,並且讀取HTML源碼
4、怎麼能知道JAVA的代理伺服器設置、埠號碼、設置類類型?我的都弄沒有了!
Java中,使用proxy是通過設置環境變數來實現的,也就是JVM的系統屬性。
我們需要設置三個屬性,proxySet proxyHost和proxyPort。
proxySet 是個boolean類型的,可以設置為true或者false,true代表使用代理伺服器。
proxyHost 是代理伺服器的IP地址
proxyPort 是代理伺服器的埠地址。
我們有兩種方法設置這種系統屬性,
一種是命令行下運行Java程序的時候,通過參數付值
一種是在java源程序中設置。
第一種方法的格式如下:
java -DproxySet=true -DproxyHost=myProxyServer.come -DproxyPort=80 MyJavaApp
第二種方法,就是直接在源程序中通過系統屬性來寫,如下:
import java.util.Properties;
...
...
strProxy="221.15.5.67";
strPort="8080";
Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost",strProxy);
systemProperties.setProperty("http.proxyPort",strPort);
....
JDK1.3以上版本,只要設置了proxyHost和proxyPort就不用寫proxySet了。
那麼反過來,顯示這些系統屬性,就可以看到有沒有使用代理了。
5、怎樣通過java使用socks代理訪問伺服器
開發socks5代理伺服器_IT/計算機_專業資料。摘要:用Java語言成功開發了一個...支持常見的HTTP代理和Sock4、Sock5代理,可以以用於區域網中,socket代理來連接到外網, 這里是java使用代理連接到...// 設置不需要通過代理伺服器訪問的主機,可以使用*...prop.setProperty("socksProxyHost",
6、有誰成功配置java mail 代理伺服器設置的嗎
樓主,時隔3年後,我遇到了和你一樣的問題,現在的代碼連接4g是可以發送的,但是一旦連接公司的內網,(需要配置IE代理),就連不上了,後來如何解決的?能說一下嗎
7、我用java的socket機制編了一個代理伺服器,客戶端已經與代理建立了連接,如何讓代理與web伺服器連接?
代理伺服器解析客戶端傳入的數據,得到伺服器ip和埠,然後創建與伺服器的連接。解析代碼如下:(這里只處理了socket v5的情況,Config的常量對應java.net.SocksConsts)
try {8、JAVA中如何設置代理伺服器,取消代理伺服器
在JAVA中怎麼設置代理伺服器呢,非常簡單
public void setServiceProxy(Config config) {
this.config = config;
System.setProperty("http.proxyHost", config.getProxyHost());
System.setProperty("http.proxyPort", config.getProxyPort());
System.setProperty("https.proxyHost", config.getProxyHost());
System.setProperty("https.proxyPort", config.getProxyPort());
}
然後在每一個HttpUrlConnection請求中,設置代理伺服器用戶名和密碼,並進行Base64加密(看你代理伺服器的要求,可能因代理伺服器不同而不同),代碼如下
private HttpURLConnection getProxyHttpConnection() throws IOException {
String authorization = config.getProxyUser() + ":"
+ config.getProxyPassword();
URL url = new URL(config.getRequestUrl());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Proxy-Authorization",
"Basic " + Base64.encodeBase64String(authorization.getBytes()));
return conn;
}
9、Java 中怎樣在程序中設置代理伺服器
你的問題應該是:在java中通過編程設置代理伺服器並訪問網路,現在作答如下:
1,講解一下基礎知識:
HTTP:是應用層協議,是基於傳輸層協議的。
TCP: 是傳輸層協議,是基於網路層協議的。
IP: 是網路層協議。
一個TCP的連接要進行三次握手(就像轉戶口一樣,不詳說),HTTP只是一個應用協議,也就是相當於一個自定義協議,即其沒有對底層的傳輸方式進行干涉,只是對數據內容格式進行了定義。
2,
我們再說說HTTP代理,從上可以理解,HTTP代理伺服器就是這樣一台機器:你把所有的HTTP請求都發到這個
HTTP代理伺服器,然後這個HTTP代理伺服器請求你要訪問的最終地址,把響應回傳給你。這里還要注意它代理的是HTTP協議,而HTTP又是基於
TCP的,也就是說這個伺服器代理的是指定HTTP內容格式的TCP連接。再說下去也沒意思了,看以下代碼:
//以下地址是代理伺服器的地址
Socket socket = new Socket("10.1.2.188", 80);
//寫與的內容就是遵循HTTP請求協議格式的內容,請求百度
socket.getOutputStream().write(new String("GET http://www.baidu.com/ HTTP/1.1\r\n\r\n").getBytes());
byte[] bs = new byte[1024];
InputStream is = socket.getInputStream();
int i;
while ((i = is.read(bs)) > 0) {
System.out.println(new String(bs, 0, i));
}
is.close();
3,當然在Java中,有Proxy代理上網的使用,此時使用URL(HTTP)就不涉及Socket(TCP)了,看如下代碼
//設置代理
System.setProperty("http.proxySet", "true");
System.setProperty("http.proxyHost", "10.1.2.188");
System.setProperty("http.proxyPort", "80");
//直接訪問目的地址
URL url = new URL("http://www.baidu.com");
URLConnection con = url.openConnection();
InputStreamReader isr = new InputStreamReader(con.getInputStream());
char[] cs = new char[1024];
int i = 0;
while ((i = isr.read(cs)) > 0) {
System.out.println(new String(cs, 0, i));
}
isr.close();