Volley android“javax.net.ssl.SSLHandshakeException:握手失败”

嗨,我正在使用排球库重buildAPI调用

这是我的testing代码发送XML数据和接收XML响应(我只需要成功地接收string格式的响应)

String url ="https://prdesb1.singpost.com/ma/FilterOverseasPostalInfo"; final String payload = "<OverseasPostalInfoDetailsRequest xmlns=\"http://singpost.com/paw/ns\"><Country>AFAFG</Country><Weight>100</Weight><DeliveryServiceName></DeliveryServiceName><ItemType></ItemType><PriceRange>999</PriceRange><DeliveryTimeRange>999</DeliveryTimeRange></OverseasPostalInfoDetailsRequest>\n"; RequestQueue mRequestQueue; // Instantiate the cache Cache cache = new DiskBasedCache(getCacheDir(), 1024 * 1024); // 1MB cap // Set up the network to use HttpURLConnection as the HTTP client. Network network = new BasicNetwork(new HurlStack()); // Instantiate the RequestQueue with the cache and network. mRequestQueue = new RequestQueue(cache, network); // Start the queue mRequestQueue.start(); // Formulate the request and handle the response. StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() { @Override public void onResponse(String response) { // Do something with the response Log.v("tesResponse","testResponseS"); Log.v("response",response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // Handle error Log.v("tesResponse","testResponseF"); Log.v("error",error.toString()); } } ){ @Override public String getBodyContentType() { return "application/xml; charset=" + getParamsEncoding(); } @Override public byte[] getBody() throws AuthFailureError { String postData = payload; try { return postData == null ? null : postData.getBytes(getParamsEncoding()); } catch (UnsupportedEncodingException uee) { // TODO consider if some other action should be taken return null; } } }; // stringRequest.setRetryPolicy(new DefaultRetryPolicy(5*DefaultRetryPolicy.DEFAULT_TIMEOUT_MS, 0, 0)); stringRequest.setRetryPolicy(new DefaultRetryPolicy(0, 0, 0)); // Add the request to the RequestQueue. mRequestQueue.add(stringRequest); 

我已经在POSTMAN上testing了String urlpayload ,并给出了成功的结果。 但不知道为什么我的Android应用程序给这个错误

 08-22 19:44:24.335 16319-16518/com.example.victory1908.test1 D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true [ 08-22 19:44:24.355 16319:16319 D/ ] HostConnection::get() New Host Connection established 0x7f67de64eac0, tid 16319 [ 08-22 19:44:24.399 16319:16518 D/ ] HostConnection::get() New Host Connection established 0x7f67de64edc0, tid 16518 08-22 19:44:24.410 16319-16518/com.example.victory1908.test1 I/OpenGLRenderer: Initialized EGL, version 1.4 08-22 19:44:24.662 16319-16319/com.example.victory1908.test1 V/tesResponse: testResponseF 08-22 19:44:24.662 16319-16319/com.example.victory1908.test1 V/error: com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: Handshake failed 

只需注意与API 23 +(Android 6.0及以上)的问题API 22工作正常!

我曾尝试设置重试策略,但不起作用。 任何人都知道代码有什么问题。 提前致谢