此时我正在尝试向Keystore添加一些证书,因为我需要Okthpp接受此证书。
所以,在开发者android中,我看到了这个例子:https://developer.android.com/training/articles/security-ssl.html?hl=es#HttpsExample
在示例中,他们这样做:
// Load CAs from an InputStream
// (could be from a resource or ByteArrayInputStream or ...)
CertificateFactory cf = CertificateFactory.getInstance("X.509");
// From https://www.washington.edu/itconnect/security/ca/load-der.crt
InputStream caInput = new BufferedInputStream(new FileInputStream("load-der.crt"));
Certificate ca;
我所做的是尝试从我添加到项目结构中的.../res/raw/xxxxx*cer
文件中加载证书。
所以我的代码如下:
CertificateFactory cf = CertificateFactory.getInstance("X.509");
caInput1 = new BufferedInputStream(new FileInputStream(String.valueOf(ctx.getResources().openRawResourceFd(R.raw.xxxx))));
但是当我尝试它时,它不起作用:
我该如何解决?或者不可能?
答案 0 :(得分:0)
openRawResourceFd(R.raw.xxxx)失败了这种文件,有人提到它:
此功能仅适用于存储在包中的资源 *作为未压缩数据,通常包括mp3文件之类的东西 *和png图片。
然而你可以使用
InputStream is = ctx.getResources().openRawResource(R.raw.xxxx);
这并不是必须使用FileInputStream,但是你直接得到它的InputStream。