- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在编写一个简单的 https 客户端,它将通过 https 拉取网页的 html。我可以很好地连接到网页,但是我下拉的 html 是乱码。
public String GetWebPageHTTPS(String URI){
BufferedReader read;
URL inputURI;
String line;
String renderedPage = "";
try{
inputURI = new URL(URI);
HttpsURLConnection connect;
connect = (HttpsURLConnection)inputURI.openConnection();
connect.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401");
read = new BufferedReader (new InputStreamReader(connect.getInputStream()));
while ((line = read.readLine()) != null)
renderedPage += line;
read.close();
}
catch (MalformedURLException e){
e.printStackTrace();
}
catch (IOException e){
e.printStackTrace();
}
return renderedPage;
}
当我向它传递一个类似 https://kat.ph/ 的字符串时返回大约 10,000 个乱码
编辑这是我修改后的自签名证书代码,但我仍然得到加密流:
public String GetWebPageHTTPS(String URI){
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) {
}
}
};
try {
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (GeneralSecurityException e) {
}
try {
System.out.println("URI: " + URI);
URL url = new URL(URI);
} catch (MalformedURLException e) {
}
BufferedReader read;
URL inputURI;
String line;
String renderedPage = "";
try{
inputURI = new URL(URI);
HttpsURLConnection connect;
connect = (HttpsURLConnection)inputURI.openConnection();
read = new BufferedReader (new InputStreamReader(connect.getInputStream()));
while ((line = read.readLine()) != null)
renderedPage += line;
read.close();
}
catch (MalformedURLException e){
e.printStackTrace();
}
catch (IOException e){
e.printStackTrace();
}
return renderedPage;
}
最佳答案
“它是否被压缩过?stackoverflow.com/questions/8249522/…”——Mahesh Guruswamy
是的,事实证明它只是 gzip 压缩,这是我解决这个问题的方法
public String GetWebPageGzipHTTP(String URI){
String html = "";
try {
URLConnection connect = new URL(URI).openConnection();
BufferedReader in = null;
connect.setReadTimeout(10000);
connect.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401");
if (connect.getHeaderField("Content-Encoding")!=null && connect.getHeaderField("Content-Encoding").equals("gzip")){
in = new BufferedReader(new InputStreamReader(new GZIPInputStream(connect.getInputStream())));
} else {
in = new BufferedReader(new InputStreamReader(connect.getInputStream()));
}
String inputLine;
while ((inputLine = in.readLine()) != null){
html+=inputLine;
}
in.close();
return html;
} catch (Exception e) {
return html;
}
}
关于javax.net.ssl.HttpsURLConnection 返回火星诗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16611447/
我注意到 eclipse 有不同的版本控制系统。它有一个数字系统以及火星、月球等系统。 是一样的吗? Mars 和 Eclipse 7 一样吗? 最佳答案 Mars 和 Luna 是代号。版本不仅通过
所以基本上我正在尝试编写一个路径查找程序,该程序可以找到从 10*10 网格中的某个点到另一个点的路径,这很好。 我有一个类Path,它是一个GridSquare的ArrayList(它们只是美化的坐
请帮忙!我打开 Eclipse Mars 继续编码,但我的代码不见了!我不知道是什么原因造成的,但一切都消失了。有人知道我能做什么吗? 注意:我尝试右键单击 java 文件 -> 替换为 -> 本地历
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
在过去的几个小时里,我们一直在尝试寻找解决方案,但没有成功。 我们从来没有这样安装 Maven。直接下载eclipse Mars,自带Maven插件。但它不允许提供 Maven 存储库的位置。我们的理
使用 Eclipse Mars,我遇到了 Symbol 'unique_ptr' could not be resolved 错误。我尝试将 -std=c++11 添加到 CDT GCC 内置编译器设
我使用的是 Eclise Mars 版本 IDE。每次启动 Eclipse 时,然后 “更新错误报告数据库” 会来挂Eclipse。请给我一个解决这个问题的方法.. 最佳答案 此问题通常发生在代理后面
我有一个在 eclipse (mars) 中开发的独立 Java 应用程序。我可以通过右键单击主类并选择“运行方式”-“Java 应用程序”来运行该应用程序。也可以使用“Debug As”-“Java
我正在尝试在我的 Eclipse IDE (Mars) 上配置 tomcat 服务器。我找不到任何安装服务器的选项。 我提到的一些链接如下: http://help.eclipse.org/mars/
这个问题已经有答案了: Building two different versions a given war with maven profiles and filtering from eclip
当我输入局部变量名称的第一部分并按 Ctrl+Space 以显示内容助手时,它会显示全名变量并预选它。 在 Eclipse Luna 版本中,如果您在键盘上按 .,则全名会被插入,内容助手会显示该变量
我从 MarketPlace 安装了 Instasearch,并想对其进行一些配置。于是我开始寻找安装目录,但是没有找到。我已经搜索了所有的 eclipse 和系统目录,但仍然没有运气。那么一般来说,
Eclipse 版本:火星。 JDK 1.8。 我想创建一个 JAXB 项目。在JAXB Facet页面,出现如下错误: The configured runtime is insufficient
这个问题在这里已经有了答案: Rebuilding Maven indexes Stuck at 0% (2 个答案) 关闭 5 年前。 Eclipse Mars 无法重建索引 https://re
我在我的 windows 8.1 Pro 电脑上安装了 eclipse mars,它的更新站点如下所示 Mars http://download.eclipse.org/releases/mars T
我刚刚升级到 Eclipse Mars,突然我的 ANT 任务与 Lunar 一起工作时出现提示: The archive: C:/Program%20Files/eclipse_lunar/plug
我尝试在 Eclipse Mars 上安装 Vaadin 插件。我收到此错误.. An error occurred while collecting items to be installed se
我能够在以前版本的 Eclipse 中运行相同的 Struts 2 应用程序。 但是当我尝试在 Mars.1 中运行它时,出现以下异常: Nov 25, 2015 1:16:56 PM org.apa
确切的错误消息是... com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte
我是一名优秀的程序员,十分优秀!