I'm using spring RestTemplate and it works perfect on emulator but if I run my app on real device I get
HttpMessageNotWritableException ............ nested exception is java.net.SocketException: Broken pipe
Here is some lines of my code(keep in mind my app works perfect on emulator)
............
LoggerUtil.logToFile(TAG, "url is [" + url + "]");
LoggerUtil.logToFile(TAG, "NetworkInfo - " + connectivityManager.getActiveNetworkInfo());
ResponseEntity<T> responseEntity = restTemplate.exchange(url,
HttpMethod.POST, requestEntity, clazz);
.............
I know my device's network works perfect because all other applications on my device are working and also using device browser I'm able to connect to my server so my server is available.
My server is up and running and my device is able to connect to my server so why I get
java.net.SocketException: Broken pipe ?!!!!!!!
Before I call restTemplate.exchange() I log NetworkInfo and it looks ok
-type: WIFI
-status: CONNECTED/CONNECTED
-isAvailable: true
Thanks in advance.
Update: It is really weird Even if I use HttpURLConnection, it works perfectly on emulator
but on real device I get 400 Bad Request
Here is my code
HttpURLConnection con = null;
try {
String url = ....;
LoggerUtil.logToFile(TAG, "url [" + url + "]" );
con = (HttpURLConnection) new URL(url).openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Connection", "Keep-Alive");
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(false);
con.connect();
LoggerUtil.logToFile(TAG, "con.getResponseCode is " + con.getResponseCode());
LoggerUtil.logToFile(TAG, "con.getResponseMessage is " + con.getResponseMessage());
}
catch(Throwable t){
LoggerUtil.logToFile(TAG, "*** failed [" + t + "]" );
}
in log file I see
con.getResponseCode is 400
con.getResponseMessage is Bad Request