【问题标题】:Android HttpClient and HTTPSAndroid HttpClient 和 HTTPS
【发布时间】:2010-04-08 21:47:54
【问题描述】:

我是在 Android 中实现 HTTPS 连接的新手。本质上,我正在尝试使用 org.apache.http.client.HttpClient 连接到服务器。我相信,在某些时候,我需要访问应用程序的密钥库才能使用私钥授权我的客户端。但是,就目前而言,我只是想建立联系,看看会发生什么;我不断收到 HTTP/1.1 400 Bad Request 错误。

尽管有很多例子(它们似乎都不适合我),但我似乎无法对此做出正面或反面。我的代码看起来像这样(BODY 常量是 XmlRPC):

 private void connect() throws IOException, URISyntaxException{

    HttpPost post     = new HttpPost(new URI(PROD_URL));
    HttpClient client = new DefaultHttpClient();

    post.setEntity(new StringEntity(BODY));
    HttpResponse result = client.execute(post);

    Log.d("MainActivity", result.getStatusLine().toString());

}

所以,很简单。让我知道是否有人有任何建议。谢谢!

【问题讨论】:

    标签: android ssl https httpclient bad-request


    【解决方案1】:

    这应该可以帮助您入门。我用的基本一样,除了ThreadSafeClientConnManager

    SchemeRegistry schemeRegistry = new SchemeRegistry();
    schemeRegistry.register(new Scheme("https", 
                SSLSocketFactory.getSocketFactory(), 443));
    
    HttpParams params = new BasicHttpParams();
    
    SingleClientConnManager mgr = new SingleClientConnManager(params, schemeRegistry);
    
    HttpClient client = new DefaultHttpClient(mgr, params);
    

    【讨论】:

    • 感谢您的快速回复。实际上,我之前尝试过类似的方法,但没有运气。同样的错误请求错误。
    • 那么问题不在于 HTTPS,而在于其他问题。我粘贴的代码对我有用。
    • 只是为了澄清:看起来您使用的是 org.apache.http.conn.ssl.SSLSocketFactory ,它与 javax.net.ssl.SSLSocketFactory 不同。对吗?
    • @synic hi synic 如果您知道我们如何使用信任库流程验证密钥库,请告诉我..这可能对我有帮助..提前谢谢...
    • @Dalbergia 是的,它是 org.apache.http.conn.ssl.SSLSocketFactory(我不得不皱起眉头很久才意识到)。
    猜你喜欢
    • 1970-01-01
    • 2019-12-14
    • 2014-09-19
    • 2012-12-25
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    相关资源
    最近更新 更多