title: Volley android "javax.net.ssl.SSLHandshakeException: Handshake failed"
body: <p>Hi I'm rebuilding a API call using volley library</p>
  
  <p>this is my test code to send XML data and receive xml response (I just need to successfully receive response in string format)</p>
  
  <pre><code>String url ="https://prdesb1.singpost.com/ma/FilterOverseasPostalInfo";
          final String payload = "&lt;OverseasPostalInfoDetailsRequest xmlns=\"http://singpost.com/paw/ns\"&gt;&lt;Country&gt;AFAFG&lt;/Country&gt;&lt;Weight&gt;100&lt;/Weight&gt;&lt;DeliveryServiceName&gt;&lt;/DeliveryServiceName&gt;&lt;ItemType&gt;&lt;/ItemType&gt;&lt;PriceRange&gt;999&lt;/PriceRange&gt;&lt;DeliveryTimeRange&gt;999&lt;/DeliveryTimeRange&gt;&lt;/OverseasPostalInfoDetailsRequest&gt;\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&lt;String&gt;() {
                      @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);
  </code></pre>
  
  <p>I have test the String <code>url</code> and the <code>payload</code> on POSTMAN and give successful result. But don't know why my android app give this error</p>
  
  <pre><code>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
  </code></pre>
  
  <p>Just notice problem only with API 23+ (android 6.0 and above) API 22 is working fine!</p>
  
  <p>I have tried set the retry policy but does not work. Anyone know what wrong with the code. Thanks in advance</p>