httpget无法通过“执行”

时间:2011-08-08 07:30:03

标签: java android json http-get

我的程序应该去一个网站,根据id(4e3f2c6659f25a0f8400000b),它会得到一个json字符串。出于某种原因,此程序不会通过client.execute行并抛出IOException。此功能适用于需要从网站提取信息的其他程序。如果你转到https://iphone-radar.com/accounts/4e3f2c6659f25a0f8400000b,你可以看到我要复制的行类型。这是我的代码,我希望你能帮助我找出为什么会发生这种情况。谢谢。

public String getText(String uri) {
        HttpClient client1 = new DefaultHttpClient();
        HttpGet request = new HttpGet("https://iphone-radar.com/accounts/4e3f2c6659f25a0f8400000b");

        ResponseHandler<String> responseHandler = new BasicResponseHandler();
        try {
            String response_str = client1.execute(request, responseHandler);
            return response_str;

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return "";

        }
    }

2 个答案:

答案 0 :(得分:0)

您肯定应该提供堆栈跟踪以确保,但很可能您的手机不信任发出iphone-radar.com的SSL证书的CA:CN = GeoTrust Global CA,O = GeoTrust Inc.,C = US。 (它不在Gingerbread的信托商店)

搜索SO以查找如何将此证书添加到您的信任存储区,有关于此的多篇帖子。

答案 1 :(得分:0)

看起来这个例外是关于不受信任的证书。当您尝试访问具有过期证书或自签名证书的HTTPS时,会发生这种情况。在浏览器上,弹出窗口将显示询问我们是否信任。在应用程序的过程中,我们需要添加一些代码来忽略不受信任的SSL证书,或者更新JVM证书以便它识别证书。

参考:Disabling Certificate Validation in an HTTP Connection