Java HttpURLConnection命令可以通过命令行完美运行,但不能通过Web UI完成

时间:2017-10-09 06:14:09

标签: java web httpsurlconnection

我有一个java文件来执行HttpURLConnection命令,当我通过命令行执行时,它可以很好地从URL获取数据。
我已经在我的Web应用程序中映射了此活动的URL,当我通过Web UI调用此活动时,此代码工作正常,但HttpURLConnection命令现在返回空结果。

public static String getData()
 {  
    String str = "";
    try{
    TrustManager[] trustAllCerts = new TrustManager[] 
    {
       new X509TrustManager()
        {
          public java.security.cert.X509Certificate[] getAcceptedIssuers() 
          {
            return null;
          }
          public void checkClientTrusted(X509Certificate[] certs, String authType) {  }
          public void checkServerTrusted(X509Certificate[] certs, String authType) {  }
        }
     };
    SSLContext sc = SSLContext.getInstance("TLS");
    sc.init(null, trustAllCerts, new java.security.SecureRandom());
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
         HostnameVerifier allHostsValid = new HostnameVerifier()
         {
            public boolean verify(String hostname, SSLSession session) 
             {
                           return true;
             }
         };
    HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
    URL url = new URL("My URL");
    URLConnection con = url.openConnection();
    Reader reader = new InputStreamReader(con.getInputStream());                
    while (true) 
    {
       int ch = reader.read();
       if (ch==-1) {
           break;
       }
       str += (char)ch;                                                                  
    }   }catch(Exception e){}
    return str;

我无法理解导致此行为的原因,请帮我解决此问题。

1 个答案:

答案 0 :(得分:1)

这是因为网络浏览器具有适当的安全性,可以保护受保护的网站免遭不必要的查询。这是CORS政策。
如果域不希望来自外界的传入请求,则此策略可提供此安全性。关闭此策略取决于域。因此,作为客户,您真的无能为力。