- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
对于我的应用程序 Transdroid,我通过 HTTP 连接到远程服务器,并且可以选择通过 HTTPS 安全地连接。对于与 HttpClient 的这些 HTTPS 连接,我使用自定义 SSL 套接字工厂实现来确保自签名证书正常工作。基本上,我接受一切并忽略对任何证书的每次检查。
这已经有一段时间了,但它不再适用于 Android 2.2 FroYo。尝试连接时会返回异常:
java.io.IOException: SSL handshake failure: I/O error during system call, Broken pipe
这是我初始化 HttpClient 的方式:
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", new PlainSocketFactory(), 80));
registry.register(new Scheme("https", (trustAll ? new FakeSocketFactory() : SSLSocketFactory.getSocketFactory()), 443));
client = new DefaultHttpClient(new ThreadSafeClientConnManager(httpParams, registry), httpParams);
我使用了一个 FakeSocketFactory 和 FakeTrustManager,可以找到它们的源代码 here .
再说一次,我不明白为什么它突然停止工作,甚至不明白错误“Broken pipe”是什么意思。我在 Twitter 上看到消息说 Seesmic 和 Twidroid 在 FroYo 上启用 SSL 时也会失败,但我不确定这是否相关。
感谢任何指示/帮助!
最佳答案
这是答案,非常感谢愿意分享修复的有用的 Seesmic 开发人员:
在自定义套接字工厂中,套接字创建(使用 createSocket
)显然已专门针对 SSLSocketFactory
实现进行了更改。所以老:
@Override
public Socket createSocket(Socket socket, String host, int port, boolean autoClose)
throws IOException, UnknownHostException {
return getSSLContext().getSocketFactory().createSocket();
}
需要改成:
@Override
public Socket createSocket(Socket socket, String host, int port, boolean autoClose)
throws IOException, UnknownHostException {
return getSSLContext().getSocketFactory().createSocket(socket, host, port, autoClose);
}
然后它又对我有用了!
更新:由于这仍然是一个流行的答案,让我更新我的工作代码链接。 This SSl-enabled socket factory支持现代协议(protocol) (TLS 1.1+)、SNI 并可选择允许 accept all certificates (不安全,忽略所有 SSL 证书)或 self-signed certificates (通过 SHA-1 哈希)。
关于android - 自定义 SSL 处理在 Android 2.2 FroYo 上停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2899079/
在Gingerbread之后,我们需要像Camera.open(integer cameraid)那样在打开相机时传入相机id(整数)。 有人知道如何在 Froyo 和 Pre-Froyo 设备中打开
我的申请有阿拉伯语翻译。它适用于 Gingerbread 及以上,但在 froyo 上会出现一些奇怪的字母。 froyo 甚至支持阿拉伯语吗?请参见下面的示例: Gingerbread 对比 冰冻 我
我几天前用 2.2 (Froyo) 升级了我的 Nexus One。今天早上,当我去使用它时,我看到主屏幕/启动器屏幕上有一个对话框,通知我有更新可用,我可以选择现在或以后升级。 我的问题是,这使用什
在 Android 2.1 上,就像在大多数图形计算机操作系统上一样,在按钮中按下鼠标,然后拖开,然后拖回,然后释放(在按钮矩形内)将导致按下按钮。当鼠标指针位于按钮内(或实际上靠近按钮)时,它也会高
我正在尝试运行以下命令,该命令是从互联网教程中摘录的: public class MainActivity extends Activity { @Override protected void on
Froyo apps2sd,一个小部件可以变成 app2sd,一旦安装了 usb 小部件就会被卸载,你卸载它再也不会启用的 usb,尝试以编程方式启用它,运气不好,任何人都可以帮助 最佳答案 没有。如
默认情况下,Wifi sleep 策略是“屏幕空闲时 sleep ”。 有了这个策略,后台服务是否可以在以后使用一些 API 唤醒 Wifi? 我正在尝试以下方法,但不起作用:当我的后台服务唤醒时,它
我的应用程序中有一个显示自定义 HTML 内容的 WebView 小部件。这是我的布局: 代码非常简单 - 处理布局的类也实现了 WebViewClient 方法。它将 ht
我想从 Android Froyo 手机应用程序中学习一些东西。我从 github 下载了源代码, 但那个是针对 ICS 的,而不是针对 Froyo 的。 有谁知道我怎样才能只下载手机应用程序而不是下
我一直在尝试使用 UiModeManager 的夜间模式功能关闭我的应用程序中按钮的背光。默认的 Desk Clock 应用程序 (Nexus One) 在变暗时会关闭背光,我也想这样做。 我试过使用
我写了一段代码在 Android 2.1 中从 URL 添加铃声。在 Froyo 中它根本不想工作。 sendBroadcast(new Intent( Intent.ACTION_MEDIA_SCA
我正在尝试创建在所有版本的 Android 上看起来都一样的 Spinners 回到 Froyo。为此,我使用 HoloEverywhere .一些微调项文本不止一行,我希望它换行。 使用默认布局,a
在我的应用程序中,我希望播放一个媒体文件,并在用户旋转屏幕(破坏 Activity)时继续播放,但如果用户移动到另一个 Activity 或出现另一个 Activity,我希望它停止播放在这个上面,他
我正在尝试暂时锁定 Android 设备的方向,大多数情况下它会随着传感器的变化而变化。所以我想做的是弄清楚当前的方向(横向、反向横向、纵向、反向纵向)是什么,将方向更改为该方向,然后再将其更改回原来
这个问题在这里已经有了答案: How do I obtain crash-data from my Android application? (30 个回答) 关闭9年前. 您知道任何适用于 Andr
Ice Cream Sandwich 、糖 bean 就可以了。但是,它不适用于早期版本。 我不知道为什么。请给我一些建议。 jSon 数据: { "ANDROID" :[ {
我一定是第一个遇到这个问题的人,因为我连一个线程都找不到。 今天我想从我的应用程序需求的相机方面开始。我阅读了一些文档 我的 list 看起来像这样: 我在上面的 list 中写了这个 在下面
关于此还有其他帖子,但我仍然不明白我需要做什么才能不允许平板电脑下载我的应用程序。我需要更多时间来针对平板电脑进行优化,但现在我想暂时搁置它。 我找到了这个:http://developer.andr
我正在使用 Android 2.2 x86 (Froyo)。 进入控制台后,我发出了一个 ps 命令并得到 Kpsmoused daemon .这是什么? USER PID PPID VSIZE RS
模拟器的摄像头在 2.1 Eclair 中拍摄照片效果很好。显然,没有用的是录制视频。 现在运行一个在 2.1 模拟器上完美运行的应用程序会导致相机应用程序崩溃。我激发了启动它的 Intent : I
我是一名优秀的程序员,十分优秀!