XML : IOException while posting encoded XML to URL using HttpURLConnection in Android

I am receiving an IOException while trying to post complex encoded XML to a url using HttpURLConnection in Android. The code is as below:

                  try {                  URL url;                  url = new URL("....mobile.xml");                  HttpURLConnection conn = (HttpURLConnection) url.openConnection();                    // Preparing the connection                  conn.setReadTimeout(10000);                  conn.setConnectTimeout(15000);                  conn.setRequestMethod("POST");                  conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");                  conn.setRequestProperty("charset", "utf-8");                  conn.setUseCaches(false);                  conn.setDoInput(true);                  conn.setDoOutput(true);                  conn.setInstanceFollowRedirects(false);                                                         // Sending request                  String body = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><mobile>.....</mobile>"; // XML data                    OutputStream outStr = conn.getOutputStream();                  BufferedWriter buffWriter = new BufferedWriter(new OutputStreamWriter(outStr));                  buffWriter.write(body); // Write POST query string (if any needed)                  buffWriter.flush();                                   buffWriter.close();                  outStr.close();                    // Receiving response                  int responseCode = conn.getResponseCode();                    if(responseCode == 200){                      InputStream inpStr = conn.getInputStream();                      BufferedReader buffRead = new BufferedReader(new InputStreamReader(inpStr));                      String line;                      StringBuffer response = new StringBuffer();                       while((line = buffRead.readLine()) != null) {                          response.append(line);                          response.append('\r');                      }                      buffRead.close();                      return response.toString();                  }                } catch (MalformedURLException e) {                  e.printStackTrace();              } catch (SocketTimeoutException e){                  e.printStackTrace();              } catch (ConnectTimeoutException e){                  e.printStackTrace();              } catch (ClientProtocolException e) {                  e.printStackTrace();              } catch (IOException e) {                  e.printStackTrace();              } catch (Exception e){                  e.printStackTrace();              }                return "";    

I am not sure as to where I am going wrong. Am I overlooking something? Is there something to add or discard. I need the XML to be UTF-8 encoded. The response too is UTF-8 encoded XML.

Any help will be appreciated.

Here is the stacktrace:

12-18 12:57:45.629: W/System.err(19317): javax.net.ssl.SSLHandshakeException: Handshake failed 12-18 12:57:45.632: W/System.err(19317): at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:390) 12-18 12:57:45.632: W/System.err(19317): at com.android.okhttp.Connection.upgradeToTls(Connection.java:201) 12-18 12:57:45.632: W/System.err(19317): at com.android.okhttp.Connection.connect(Connection.java:155) 12-18 12:57:45.632: W/System.err(19317): at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:276) 12-18 12:57:45.632: W/System.err(19317): at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:211) 12-18 12:57:45.632: W/System.err(19317): at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:382) 12-18 12:57:45.632: W/System.err(19317): at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:106) 12-18 12:57:45.632: W/System.err(19317): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:217) 12-18 12:57:45.632: W/System.err(19317): at com.android.okhttp.internal.http.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:218) 12-18 12:57:45.632: W/System.err(19317): at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:25) 12-18 12:57:45.633: W/System.err(19317): at com.spinnpress.profile.AccountFragment$TelrPostDataAsyncTask.doInBackground(AccountFragment.java:957) 12-18 12:57:45.634: W/System.err(19317): at com.spinnpress.profile.AccountFragment$TelrPostDataAsyncTask.doInBackground(AccountFragment.java:1) 12-18 12:57:45.634: W/System.err(19317): at android.os.AsyncTask$2.call(AsyncTask.java:292) 12-18 12:57:45.634: W/System.err(19317): at java.util.concurrent.FutureTask.run(FutureTask.java:237) 12-18 12:57:45.634: W/System.err(19317): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 12-18 12:57:45.634: W/System.err(19317): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 12-18 12:57:45.635: W/System.err(19317): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 12-18 12:57:45.635: W/System.err(19317): at java.lang.Thread.run(Thread.java:818) 12-18 12:57:45.636: W/System.err(19317): Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb83d40b8: Failure in SSL library, usually a protocol error 12-18 12:57:45.636: W/System.err(19317): error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:770 0xadece005:0x00000000) 12-18 12:57:45.637: W/System.err(19317): at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method) 12-18 12:57:45.637: W/System.err(19317): at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:318) 12-18 12:57:45.637: W/System.err(19317): ... 17 more

No comments:

Post a Comment