解决HTTPS问题的SAX解析器!

时间:2011-05-26 08:40:45

标签: android http ssl https sax

我正在使用sax解析器从在线XML文件中获取一些数据。 我尝试将文件复制到我自己的本地服务器“http not https”,然后流式传输并解析它,它就像一个魅力。

然而,当我从原来的“https”服务器尝试时,我一直在以下地址获得java.lang.StringIndexOutOfBoundsException:

xr.parse(new InputSource(urlHealthProducts.openStream()));

这是我的代码:

我从这里使用了trustEveryone()方法: Self-signed SSL acceptance on Android因为我有不受信任的SSL证书例外,请不要对此发表评论,除非这是我的问题的原因!

我也用这个班登录:

static class MyAuthenticator extends Authenticator {
    String username, password;

    MyAuthenticator(String user, String pwd) {
        super();
        username = user;
        password = pwd;
    }

    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(username, password.toCharArray());
    }
}

最后导致此异常的代码是:

trustEveryone();
MyAuthenticator auth = new MyAuthenticator("user", "pass");
Authenticator.setDefault(auth);

URL urlHealthProducts = new URL("https://somewebsite/myfile");

SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();

XMLHealthProductsHandler healthProductsHandler = new XMLHealthProductsHandler();
xr.setContentHandler(healthProductsHandler);
xr.parse(new InputSource(urlHealthProducts.openStream()));

即使没有Authenticator,我也得到了同样的例外 我一直在网上挖太久了!上面使用这些方法的每个人似乎都很好,除了我!!

0 个答案:

没有答案