为了账号安全,请及时绑定邮箱和手机立即绑定

Android中的安全HTTP发布

Android中的安全HTTP发布

撒科打诨 2019-08-17 15:00:02
Android中的安全HTTP发布我有一个非常基本的帮助类,我用来做我所有的Http Get / Post东西。我正在使用org.apache.http库中的HttpGet,HttpPost和HttpClient。我的所有东西都可以在HTTP上正常工作,但是当我尝试使用通过HTTPS工作的服务时,我在执行请求时会遇到ClientProtocolException。异常中唯一的消息是“服务器无法响应有效的HTTP响应”。为了测试,我使用简单的html表单从浏览器发送完全相同的有效负载,使用RequestBuilder发送Fiddler2。我已经发送了无效和空的有效负载,甚至发送了上面的所有上面有和没有标题,看看对象构建请求的方式是否有一些时髦。我在测试中使用的所有内容都为我提供了有效的200状态HTTP响应。该服务只是给我一个描述错误的结构,如果我给它一些不同于它预期的东西。我需要添加到HttpPost或HttpClient对象以告诉它使用HTTPS吗?我是否必须明确告诉它使用不同的端口?编辑:我确实为https通信注册了错误的套接字工厂。这是我用来创建具有正确套接字工厂的HttpClient对象的更新方法,以防有人在将来搜索此类问题:private HttpClient createHttpClient(){     HttpParams params = new BasicHttpParams();     HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);     HttpProtocolParams.setContentCharset(params, HTTP.DEFAULT_CONTENT_CHARSET);     HttpProtocolParams.setUseExpectContinue(params, true);     SchemeRegistry schReg = new SchemeRegistry();     schReg.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));     schReg.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));     ClientConnectionManager conMgr = new ThreadSafeClientConnManager(params, schReg);     return new DefaultHttpClient(conMgr, params);}
查看完整描述

2 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

由于某些方法已被弃用,不应该这样吗?

  private DefaultHttpClient createHttpClient() {
    HttpParams params = new BasicHttpParams();

    HttpConnectionParams.setConnectionTimeout(params, 10000);
    HttpConnectionParams.setSoTimeout(params, 10000);
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
    HttpProtocolParams.setContentCharset(params, HTTP.DEFAULT_CONTENT_CHARSET);
    HttpProtocolParams.setUseExpectContinue(params, true);

    SchemeRegistry schReg = new SchemeRegistry();
    schReg.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory()));
    schReg.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory()));
    ClientConnectionManager conMgr = new PoolingClientConnectionManager(schReg);

    return new DefaultHttpClient(conMgr, params);
  }

我应该改变其他任何东西,比如HttpVersion吗?


查看完整回答
反对 回复 2019-08-17
  • 2 回答
  • 0 关注
  • 398 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信