问题描述
这个问题经常被问到,但所有的答案都是两三年前的。我登录了我的 Android 应用程序,日期保存在我的云服务器上的 MySQL 数据库中,该数据库具有 SSL 证书。 当我在本地机器上测试我的应用程序时一切正常,但是当我尝试连接我的云服务器时,我收到消息“未找到认证路径的信任锚”。我的凭据没问题。 我知道我必须设置一个 sslSocketFactory。我尝试了很多,但一个奏效了。我现在坐了好几天。可能有人知道如何解决
这里我的代码没有 sslSocketFactory
public View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.logintest,container,false);
btn_login = view.findViewById(R.id.btn_logintest);
email = view.findViewById(R.id.etEmail);
password = view.findViewById(R.id.etPassword);
btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
login();
}
public void login() {
str_email = email.getText().toString();
str_password = password.getText().toString();
if(!str_email.equals("") && !str_password.equals("")) {
StringRequest request = new StringRequest(Request.Method.POST,URL_LOGIN,new Response.Listener<String>() {
@Override
public void onResponse(String response) {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction= fragmentManager.beginTransaction();
DummyFragment dummyFragment = new DummyFragment();
fragmentTransaction.replace(R.id.container,dummyFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
Log.e("Text: ",response);
Toast.makeText(getActivity(),"erfolgreicher Text: " +response,Toast.LENGTH_LONG).show();
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getActivity(),"Text: " +error.getMessage().toString(),Toast.LENGTH_SHORT).show();
}
}
) {
@Override
protected Map<String,String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<>();
params.put("str_email",email.getText().toString());
params.put("str_password",password.getText().toString());
return params;
}
@Override
public Map<String,String> getHeaders() throws AuthFailureError {
try {
HashMap<String,String> headers = new HashMap<>();
String credentials = "xxxxxxxxx:xxxxxxxxxx";
String auth = "Basic "
+ Base64.encodeToString(credentials.getBytes(),Base64.NO_WRAP);
headers.put("Content-Type","application/json");
headers.put("Authorization",auth);
return headers;
} catch (Exception e) {
Log.e(TAG,"Authentication failure");
Toast.makeText(getActivity(),"" +e,Toast.LENGTH_LONG).show();
}
return super.getHeaders();
}
};
RequestQueue requestQueue = Volley.newRequestQueue(getActivity().getApplicationContext());
requestQueue.add(request);
}
else {
if (email.getText().toString().equals("")) {
Toast.makeText(getActivity(),"Bitte Email Adresse eingeben",Toast.LENGTH_SHORT).show();
} else if (password.getText().toString().equals("")) {
Toast.makeText(getActivity(),"Bitte Passwort eingeben",Toast.LENGTH_SHORT).show();
}
}
}
});
return view;
}
}
我尝试了 android 开发者页面上的代码,但出现了一些错误。我试图设置 network_security.xml 但它对我不起作用。当我用邮递员测试我的凭据时,我得到了 200 的响应。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)