How to check if web service is available, and then connect to it in one go?
android, java, soap, web-services
Solution
I would just try connecting, if it times out, handle the exception, and display an error.
Problem
I want to check if a web service is available before connecting to it, so that if it is not available, I can display a dialog that says so. My first attempt is this: ``` public void isAvailable(){ // first check if there is a WiFi/data connection available... then: URL url = new URL("URL HERE"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestProperty("Connection", "close"); connection.setConnectTimeout(10000); // Timeout 10 seconds connection.connect(); // If the web service is available if (connection.getResponseCode() == 200) { return true; } else return false; } ``` And then in a separate class I do ``` if(...isAvailable()){ HttpPost httpPost = new HttpPost("SAME URL HERE"); StringEntity postEntity = new StringEntity(SOAPRequest, HTTP.UTF_8); postEntity.setContentType("text/xml"); httpPost.setHeader("Content-Type", "application/soap+xml;charset=UTF-8"); httpPost.setEntity(postEntity); // Get the response HttpClient httpclient = new DefaultHttpClient(); BasicHttpResponse httpResponse = (BasicHttpResponse) httpclient.execute(httpPost); // Convert HttpResponse to InputStream for parsing HttpEntity responseEntity = httpResponse.getEntity(); InputStream soapResponse = responseEntity.getContent(); // Parse the result and do stuff with the data... } ``` However I'm connecting to the same URL twice, and this is inefficient and probably slowing down my code. First of all, is it? Secondly, what's a better way to do this?