Eclipse出站连接被阻止:相同的url在web浏览器中工作

Eclipse出站连接被阻止:相同的url在web浏览器中工作,eclipse,connection-refused,Eclipse,Connection Refused,我使用HttpURLConnection类从eclipse连接到外部web服务,然后收到一条错误消息“连接被拒绝” 公共类TestConnection{ 静止的{ //仅适用于本地主机测试 javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier( 新的javax.net.ssl.HostnameVerifier(){ 公共布尔验证(字符串主机名, javax.net.ssl.SSLSession(会话){ if(hostname.e

我使用HttpURLConnection类从eclipse连接到外部web服务,然后收到一条错误消息“连接被拒绝”

公共类TestConnection{
静止的{
//仅适用于本地主机测试
javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(
新的javax.net.ssl.HostnameVerifier(){
公共布尔验证(字符串主机名,
javax.net.ssl.SSLSession(会话){
if(hostname.equals(“localhost”)){
返回true;
}
返回false;
}
});
}
公共静态void main(字符串[]args)
{
HttpURLConnection-urlConnection;
试一试{
//具有所需参数的https get方法
//XMLHttpRequest s1=新的XMLHttpRequest();
urlConnection=(HttpURLConnection)((新URL)()https://google.com);
urlConnection.setRequestMethod(“GET”);
urlConnection.setRequestProperty(“用户代理”,“用户代理”);
int HTTPS_RESPONSE_CODE=urlConnection.getResponseCode();
BufferedReader in=新的BufferedReader(
新的InputStreamReader(urlConnection.getInputStream());
字符串输入线;
StringBuffer响应=新的StringBuffer();
而((inputLine=in.readLine())!=null){
追加(inputLine);
}
in.close();
字符串HTTPS_RESULT=response.toString();
}捕获(不支持的编码异常e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
java.net.ConnectException:连接被拒绝:连接
位于java.net.DualStackPlainSocketImpl.connect0(本机方法)
位于java.net.DualStackPlainSocketImpl.socketConnect(未知源)
位于java.net.AbstractPlainSocketImpl.doConnect(未知源)
位于java.net.AbstractPlainSocketImpl.connectToAddress(未知源)
位于java.net.AbstractPlainSocketImpl.connect(未知源)
位于java.net.PlainSocketImpl.connect(未知源)
位于java.net.socksocketimpl.connect(未知源)
位于java.net.Socket.connect(未知源)
位于sun.security.ssl.SSLSocketImpl.connect(未知源)
位于sun.security.ssl.BaseSSLSocketImpl.connect(未知源)
位于sun.net.NetworkClient.doConnect(未知源)
位于sun.net.www.http.HttpClient.openServer(未知来源)
位于sun.net.www.http.HttpClient.openServer(未知来源)
位于sun.net.www.protocol.https.HttpsClient。(未知来源)
位于sun.net.www.protocol.https.HttpsClient.New(未知来源)
位于sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(未知源)
位于sun.net.www.protocol.http.HttpURLConnection.plainConnect0(未知源)
位于sun.net.www.protocol.http.HttpURLConnection.plainConnect(未知源)
位于sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(未知源)
位于sun.net.www.protocol.http.HttpURLConnection.getInputStream0(未知源)
位于sun.net.www.protocol.http.HttpURLConnection.getInputStream(未知源)
位于java.net.HttpURLConnection.getResponseCode(未知源)
位于sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(未知源)
位于TestConnection.main(TestConnection.java:19)

但是,如果我尝试从浏览器连接到同一个站点,我可以从该服务获得响应。您能告诉我是否有解决方法吗?

默认情况下,
HttpURLConnection
类将不允许
localhost
作为主机名。您需要定义一个自定义主机名验证器,该验证器将允许
localhost
。您可以将此代码放入类顶部的
静态
块中,您将在其中使用
HttpURLConnection

public final class YourClassName {
    static {
        //for localhost testing only
        javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(
            new javax.net.ssl.HostnameVerifier(){

                    public boolean verify(String hostname,
                                      javax.net.ssl.SSLSession sslSession) {
                        if (hostname.equals("localhost")) {
                            return true;
                        }
                        return false;
                    }
                });
    }

    // use HttpURLConnection here ...
}

默认情况下,
HttpURLConnection
类将不允许
localhost
作为主机名。您需要定义一个自定义主机名验证器,该验证器将允许
localhost
。您可以将此代码放入类顶部的
静态
块中,您将在其中使用
HttpURLConnection

public final class YourClassName {
    static {
        //for localhost testing only
        javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(
            new javax.net.ssl.HostnameVerifier(){

                    public boolean verify(String hostname,
                                      javax.net.ssl.SSLSession sslSession) {
                        if (hostname.equals("localhost")) {
                            return true;
                        }
                        return false;
                    }
                });
    }

    // use HttpURLConnection here ...
}

请查找工作代码

代理服务器设置为有效的代理服务器,我使用的http端口为8080

proxy=新代理(proxy.Type.HTTP,新InetSocketAddress(代理服务器,代理端口))

建立连接时,将代理作为参数传递


urlConnection=(HttpURLConnection)((新的URL(URI).openConnection(代理))

请查找工作代码

代理服务器设置为有效的代理服务器,我使用的http端口为8080

proxy=新代理(proxy.Type.HTTP,新InetSocketAddress(代理服务器,代理端口))

建立连接时,将代理作为参数传递


urlConnection=(HttpURLConnection)((新的URL(URI).openConnection(代理))

您试图访问的URL可能重复?请将其发布在您的OP中。此代码在我的本地设置中运行完全正常。我正在使用IntelliJ,尽管这不重要。你确定你运行的是完全相同的代码吗?是的,我发布了完全相同的代码,我在防火墙后面?这可能是一个问题吗?如果您在防火墙后面,我预计来自浏览器的呼叫也会失败。您试图访问的URL可能重复?请将其发布在您的OP中。此代码在我的本地设置中运行完全正常。我正在使用IntelliJ,尽管这不重要。你确定你运行的是完全相同的代码吗?是的,我发布了完全相同的代码,我在防火墙后面?这可能是一个问题吗?如果你在防火墙后面,我希望来自浏览器的呼叫也会失败。我仍然有同样的问题。请尝试刷新你的工作区。这应该能解决你的问题。我试过了