Java HttpURLConnection 命令可以通过命令行完美运行,但不能通过 Web UI
Java HttpURLConnection command works perfectly through command line but not through web UI
我有一个 java 文件来执行 HttpURLConnection
命令,当我通过命令行执行时,它可以完美地从 URL.
中获取数据
我在我的 Web 应用程序中将 URL 映射到此 activity,当我通过 Web UI 调用此 activity 时,此代码工作正常,但 HttpURLConnection
命令除外现在 returns 空结果。
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;
我不明白是什么导致了这种行为,请帮我解决这个问题。
这是因为网络浏览器具有适当的安全措施来保护网站免受不必要的查询。这是 CORS
政策。
如果域不希望来自外部世界的传入请求,则此策略提供此安全性。关闭此策略取决于域。所以作为客户,你真的无能为力。
我有一个 java 文件来执行 HttpURLConnection
命令,当我通过命令行执行时,它可以完美地从 URL.
中获取数据
我在我的 Web 应用程序中将 URL 映射到此 activity,当我通过 Web UI 调用此 activity 时,此代码工作正常,但 HttpURLConnection
命令除外现在 returns 空结果。
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;
我不明白是什么导致了这种行为,请帮我解决这个问题。
这是因为网络浏览器具有适当的安全措施来保护网站免受不必要的查询。这是 CORS
政策。
如果域不希望来自外部世界的传入请求,则此策略提供此安全性。关闭此策略取决于域。所以作为客户,你真的无能为力。