Java “空白”;地点“;但重定向发生在IE中

Java “空白”;地点“;但重定向发生在IE中,java,httpurlconnection,Java,Httpurlconnection,我正在尝试使用HttpURLCONNECTION对象访问URL,但重定向似乎没有被识别,因为位置头是空的。是否有其他方法可以遵循重定向。setFollowRedirects也没有帮助 private static boolean isLive(String link) { HttpURLConnection urlConnection = null; try { URL url = new URL(link); System.out.println(url); urlConnecti

我正在尝试使用HttpURLCONNECTION对象访问URL,但重定向似乎没有被识别,因为位置头是空的。是否有其他方法可以遵循重定向。setFollowRedirects也没有帮助

private static boolean isLive(String link) {
HttpURLConnection urlConnection = null;
try {
  URL url = new URL(link);
  System.out.println(url);
  urlConnection = (HttpURLConnection) url.openConnection();
  urlConnection.setInstanceFollowRedirects(true);
  urlConnection.setRequestMethod("GET");
 // urlConnection.connect();

  //urlConnection.setConnectTimeout(5000); /* timeout after 5s if can't connect */
  //urlConnection.setReadTimeout(5000); /* timeout after 5s if the page is too slow */
  urlConnection.connect();
  int resp = urlConnection.getResponseCode();
  System.out.println(resp);
  String redirectLink = urlConnection.getHeaderField("Location");
  System.out.println(redirectLink);
  if (redirectLink != null && !link.equals(redirectLink)) {
    return isLive(redirectLink);
  } else {
    return urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK;
  }
} catch (Exception e) {
  return false;
} finally {
  if (urlConnection != null) {
    urlConnection.disconnect();
  }
}

略作修改的代码忽略SSL证书错误

import java.net.HttpURLConnection;
import java.net.URL;

import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import org.slf4j.LoggerFactory;




public class RedirectTest {


    private static boolean isLive(String link) {
        HttpURLConnection urlConnection = null;
        try {
          URL url = new URL(link);
          System.out.println("link: " + url);
          urlConnection = (HttpURLConnection) url.openConnection();          
          urlConnection.setInstanceFollowRedirects(false);
          urlConnection.setRequestMethod("GET");
         // urlConnection.connect();

          //urlConnection.setConnectTimeout(5000); /* timeout after 5s if can't connect */
          //urlConnection.setReadTimeout(5000); /* timeout after 5s if the page is too slow */
          urlConnection.connect();
          int resp = urlConnection.getResponseCode();
          System.out.println(resp);
          String redirectLink = urlConnection.getHeaderField("Location");
          System.out.println("Location : " + redirectLink);
          if (redirectLink != null && !link.equals(redirectLink)) {
            boolean b = isLive(redirectLink);   
            System.out.println("isLive " + redirectLink + " =  " + b);
            return b;
          } else {
            return urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK;
          }
        } catch (Exception e) {
            LoggerFactory.getLogger(RedirectTest.class).debug("Exception", e);
          return false;
        } finally {
          if (urlConnection != null) {
            urlConnection.disconnect();
          }
        }
    }


    public static void main(String[] args) throws Exception {

     // Create a trust manager that does not validate certificate chains
        TrustManager[] trustAllCerts = new TrustManager[]{
            new X509TrustManager() {
                public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
                public void checkClientTrusted(
                    java.security.cert.X509Certificate[] certs, String authType) {
                }
                public void checkServerTrusted(
                    java.security.cert.X509Certificate[] certs, String authType) {
                }
            }
        };

        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, new java.security.SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());


        isLive("https://www0.bankofamerica.com/home-loans/mortgage-purchase.go");
    }
}

您从HTTP服务器得到的响应是什么?它是公共服务器吗?您可以发布URL还是可以发布响应(状态、标题等)?这是一个内部应用程序。。但我发现,使用您的示例URL,我得到了一个永久移动的
HTTP/1.1 301
位置:https://www9.bankofamerica.com/home-loans/mortgage-purchase.go
。您确定位置标题为空吗?或者在您的页面中是否有类似于通过JavaScript重定向或刷新元标记的内容?哇。。这与我在这里得到的完全不同。你能告诉我你是怎么得到重定向信息的吗。这是我正在使用的代码,供您参考。不知何故,我并不认为这段代码无法建立连接,我使用的是curl
curl--verbose--unsecurehttps://www0.bankofamerica.com/home-loans/mortgage-purchase.go
并获得响应