java 如何使用java绕过代理
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/10186069/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to bypass the proxy using java
提问by developer
Here belwo is my code
这里 belwo 是我的代码
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import com.sun.org.apache.xml.internal.security.utils.Base64;
public class webpageDisplay {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
System.getProperties().put( "proxySet", "true" );
System.getProperties().put( "proxyHost", "I given proxy host" );
System.getProperties().put( "proxyPort", "85" );
URL url=new URL("http://www.yahoo.com");
URLConnection uc = url.openConnection ();
String encoded = new String
(Base64.encode(new String("user:pass").getBytes()));
uc.setRequestProperty("Proxy-Authorization", "Basic " + encoded);
uc.connect();
//String url = "http://www.yahoo.com";
JEditorPane editor = new JEditorPane(url);
editor.setEditable(false);
JScrollPane pane = new JScrollPane(editor);
JFrame f = new JFrame("HTML Demo");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(pane);
f.setSize(800, 600);
f.setVisible(true);
}
}
even though i provided proxy host and userid still iam getting erorr as below
即使我提供了代理主机和用户 ID,我仍然收到如下错误
Exception in thread "main" java.net.UnknownHostException: www.yahoo.com
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:196)
at java.net.Socket.connect(Socket.java:530)
at java.net.Socket.connect(Socket.java:480)
at sun.net.NetworkClient.doConnect(NetworkClient.java:169)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:406)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:541)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:245)
at sun.net.www.http.HttpClient.New(HttpClient.java:318)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:790)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:738)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:649)
at webpageDisplay.main(webpageDisplay.java:26)
Can anyone suggest how to resolve the issue or how can i bypass the proxy
任何人都可以建议如何解决问题或我如何绕过代理
回答by Deco
You need to use the properties http.proxyHost
and http.proxyPort
rather than just proxyHost
and proxyPort
.
您需要使用属性http.proxyHost
andhttp.proxyPort
而不仅仅是proxyHost
and proxyPort
。
See the following questions for example code:
有关示例代码,请参阅以下问题:
How to use an HTTP proxy in java
回答by vivekv
You have crossed half the bridge. The way you are passing UID/pwd has to be changed
你已经过了一半的桥。您传递 UID/pwd 的方式必须改变
You also need a java.net.Authenticator object whose static setDefault() method has to be called to setup authentication. See here for more information
您还需要一个 java.net.Authenticator 对象,必须调用其静态 setDefault() 方法来设置身份验证。浏览此处获取更多信息
http://docs.oracle.com/javase/6/docs/technotes/guides/net/http-auth.html
http://docs.oracle.com/javase/6/docs/technotes/guides/net/http-auth.html
回答by Manimaran Samuthirapandi
System.setProperty("http.proxyHost", "132.186.192.234");
System.setProperty("http.proxyPort", "8080");
System.setProperty("https.proxyUser", "ad001\userid");
System.setProperty("https.proxyPassword", "sect");