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