com.android.volley.NoConnectionError:javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException

时间:2018-03-04 13:32:11

标签: android android-studio kotlin

我需要从php文件到myresulttextview获取回显值ie(是或否)但无法检索它说错误:“com.android.volley.NoConnectionError:javax.net.ssl.SSLHandshakeException:java。 security.cert.CertPathValidatorException:找不到证书路径的信任锚。“

val barcode = data.getParcelableExtra<Barcode>(BarcodeCaptureActivity.BarcodeObject)
                        val p = barcode.cornerPoints
                        var m = barcode.displayValue.toString().trim()
                        val jsonobj=JSONObject()
                        jsonobj.put("email",m)
                        val url="https://192.168.2.11/verf1.php"
                        val que=Volley.newRequestQueue(this@MainActivity)
                        val req=JsonObjectRequest(Request.Method.POST,url,jsonobj,Response.Listener {
                            response ->mResultTextView.setText(response.toString())


                        },Response.ErrorListener {
                            response ->mResultTextView.setText(response.toString())

                        })
                        que.add(req)

我的php文件

<?php
require "conn.php";
$user_name=false;
if(isset($_POST["email"])){
    $user_name = $_POST["email"];
}
$mysql_qry="select *  from exitpass where email like '%".$user_name."%'";
$result=mysqli_query($conn,$mysql_qry);

if(mysqli_num_rows($result)>0)
{
echo"yes";
}
else{
echo"no";}
?>

1 个答案:

答案 0 :(得分:0)

该错误与您的192.168.2.11 Web服务器关联的TLS / SSL证书有关。根据您的设置,有几种不同的方法可以解决此问题。

如果您的网络服务器上没有安装证书,请用http替换https以通过未加密的频道发送。

 val url="http://192.168.2.11/verf1.php"

如果Web服务器安装了证书,那么您可能会遇到一些问题。与堆栈跟踪相关的常见问题是无效的证书,使用错误的(或没有)域名,加密类型和Java版本的错误Java代码,信任链中的某个问题,过期的证书等等。

总之,我认为您只需要通过http发送,但如果这不起作用,您应该按此顺序排除故障。

  1. 将IP更改为与您的证书相关联的域名
  2. 确认您可以在浏览器中访问资源并且证书未过期
  3. 找出您正在使用的加密类型(TLS 1.1,TLS 1.2等)以及您正在使用的Java(1.6或1.7)。 Java 6和Java 7之间存在一个关键区别,因为它与访问TLS加密资源有关,我在最高评级的帖子(作为参考)中解释它。
  4. 如果所有其他方法都失败了,您可能需要在Androids JVM信任库中手动安装证书。我相信你可以从大多数GUI中做到这一点,如果你有权限,肯定可以从终端做到这一点。你不应该这样做,但有时你会被迫在证书链断裂的情况下。它可能不是导致问题的证书,它可以是您信任链中的任何证书。
  5. 如果最初的建议有效,请告诉我。如果它不起作用,请在这里提供公共证书(或者只是域名,我会把它拉下来)和你的Java版本,我可以更好地协助。