【问题标题】:How to test if my app can connect with https and fallback to http otherwise?如何测试我的应用程序是否可以连接 https 并回退到 http?
【发布时间】:2015-12-13 15:45:58
【问题描述】:

我使用 Java HttpURLConnection 连接我的服务器:

HttpURLConnection connection = null;
try {
  connection = (HttpURLConnection) urlObj.openConnection();
} catch (IOException e) {
  logger.severe("ConnectionImpl - request(): IOException e: "+e.getMessage());
  e.printStackTrace();
}
connection.setDoInput(true);
connection.setRequestMethod("GET");
try {
    connection.connect(); 
  } catch (IOException e) {
    logger.severe("ConnectionImpl - request(): IOException e: "+e.getMessage());
    e.printStackTrace();
}
int statusCode = connection.getResponseCode();

如何测试我的应用是否可以连接 https 并在失败时返回 http?

【问题讨论】:

  • 回退到 HTTP 几乎破坏了 HTTPS 的全部目的(严格的被动攻击者除外)。 不要那样做
  • 这只是在 http in 由于某种原因不可用的情况下。
  • HTTPS 不可用的唯一可能原因是攻击者正在阻止 HTTPS 连接,以便他们可以读取或修改 HTTP 响应。 不要这样做

标签: java android http https httpurlconnection


【解决方案1】:

您可以通过以下方式检查状态代码来做到这一点:

int statusCode = connection.getResponseCode();
if(statusCode==200){
Log.d("Connection Status","Can connect");
}
else{
Log.d("Connection Status","Can't connect");
}

if(statusCode == HttpURLConnection.HTTP_OK){
    Log.d("Connection Status","Can connect");
    }
    else{
    Log.d("Connection Status","Can't connect");
    }

【讨论】:

  • 我该如何将协议更改为 http 还是必须更改完整的 url?
  • 是的,您必须更改 url 或由 http/https 组成的部分 url 字符串
猜你喜欢
  • 2013-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-15
相关资源
最近更新 更多