मैं जावा webservice एप्लिकेशन (जेएक्स-डब्ल्यूएस के साथ) विकसित कर रहा हूं जिसे इंटरनेट और इंट्रानेट से अलग कनेक्शन स्थापित करने के लिए दो अलग-अलग प्रॉक्सी का उपयोग करना है। समाधान के रूप में मैंने अपना खुद का java.net लिखने की कोशिश की। PrroxySelector जो java.net लौटाता है। इंटरनेट या इंट्रानेट के लिए प्रॉक्सी इंस्टेंस (प्रकार HTTP)।विशिष्ट पते पर विभिन्न प्रॉक्सी से कनेक्ट करना
थोड़ा परीक्षण आवेदन में मैं URL.openConnection() के माध्यम से वेबपृष्ठ डाउनलोड करने का प्रयास करता हूं, और इससे पहले कि मैंने डिफ़ॉल्ट प्रॉक्सी चयनकर्ता को अपने साथ बदल दिया।
java.net.SocketException:: अज्ञात प्रॉक्सी के प्रकार: लेकिन यह एक अपवाद में परिणाम HTTP java.net.SocksSocketImpl.connect (SocksSocketImpl.java:370) पर java.net.Socket.connect पर (सॉकेट.जावा 1 9 1) java.net.Socket.connect (सॉकेट.जावाश 6 9 6) sun.net पर। NetworkClient.do कनेक्ट (NetworkClient.java:163) sun.net पर .www.http.HttpClient। sunServer (HttpClient.java:394) sun.net पर .www.http.HttpClient.openServer (HttpClient.java:5229) sun.net पर .www.http.HttpClient। (HttpClient.java3333) सूरज पर .NET.www.http.HttpClient.New (HttpClient.java:306) sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient (HttpURLConnection.java:844) sun.net पर .www.protocol.http.HttpURLConnection.plain कनेक्ट (HttpURLConnection.java:792) sun.net पर। www.protocol.http.HttpURLConnection.connect (HttpURLConnection.java:703) sun.net पर .www.protocol.http.HttpURLConnection.getInputStream (HttpURLConnection.java:1026) java.net पर। HttpURLConnection.getResponseCode (HttpURLConnection। जावा: 373) norman.test.ProxyTest.conntectToRmViaProxy (ProxyTest.java:42 पर ) norman.test.ProxyTest.main (ProxyTest.java:65 पर)
- प्रश्न: " सॉक्स के माध्यम से कनेक्शन स्थापित करने का प्रयास क्यों करता है, अगर मेरा प्रॉक्सी चयनकर्ता केवल HTTP प्रॉक्सी देता है? "
2 प्रश्न: "क्या प्रत्येक विकल्प के लिए अलग-अलग प्रॉक्सी परिभाषित करने के लिए कोई विकल्प है?"
public class ProxyTest {
OwnProxySelector ownSelector = new OwnProxySelector();
public ProxyTest(){
ownSelector.setIntranetProxy("intranet.proxy", 8123);
try {
ownSelector.setIntranetAddress("http://intranet:80");
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ownSelector.setExtranetProxy("", 0);
try {
ownSelector.setExtranetAddress("http://www.example.com:80");
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ProxySelector.setDefault(ownSelector);
}
public void conntectToRmViaProxy(boolean internal, String connectAddress){
try {
URL url = new URL(connectAddress);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
System.out.println(conn.getResponseMessage());
}
else{
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
int tmp = reader.read();
while(tmp != -1){
System.out.print((char)tmp);
tmp = reader.read();
}
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args){
ProxyTest proxyText = new ProxyTest();
proxyText.conntectToRmViaProxy(true, "http://intranet:80");
}
}
क्या वास्तव में इस पर कोई संकेत नहीं है? –