After making sure the url of webservice is reachable by using the below code by watching variable urlc.getResponseCode()
for response code while altering the ip from localhost ,fixed ,external and finally to 10.0.2.2
public static boolean isNetworkAvailable() {
//http://stackoverflow.com/questions/1560788/how-to-check-internet-access-on-android-inetaddress-never-timeouts/4009133#comment24565402_4009133
/* ConnectivityManager cm =
(ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnected()) {//netInfo.isConnectedOrConnecting()
return true;
}
return false;*/
//http://stackoverflow.com/questions/5474089/how-to-check-currently-internet-connection-is-available-or-not-in-android?rq=1
boolean connected = false;
ConnectivityManager connectivityManager = (ConnectivityManager)_context.getSystemService(Context.CONNECTIVITY_SERVICE);
if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
//we are connected to a network
connected=true;
return connected;
}
else
{
connected=false;
return false;
}
}
public static boolean hasActiveInternetConnection() {
if (isNetworkAvailable()) {
try {
//String url = "http://www.google.com",
String url = "http://10.0.2.2:8089/UNIV_AXIS_DYN_WEB/services/ServiceMethods?wsdl",
proxy = "proxy.rss.jo",
port= "8080";
URL server = new URL(url);
Properties systemProperties = System.getProperties();
/*systemProperties.setProperty("http.prosyHost",proxy);
systemProperties.setProperty("http.prosyHost",port);*/
HttpURLConnection urlc = (HttpURLConnection) (server.openConnection());
urlc.setRequestProperty("User-Agent", "Test");
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(500);
urlc.connect();
System.out.println(urlc.getResponseCode());
return (urlc.getResponseCode() == 200);
} catch (IOException e) {
Log.e(LOG_TAG, "Error checking internet connection", e);
return false;
}
} else {
Log.d(LOG_TAG, "No network available!");
return false;
}
}
For me i got this hint "not the missing character s in the below"
[ERROR] Exception occurred while trying to invoke service method login
org.apache.axis2.AxisFault: namespace mismatch require http://services.univ.rss found http://service.univ.rss
The rest of log tomcat etc
at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:190)
at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:117)
at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172)
at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
And yes after tracing the LogCat i did not check th tomcat server log eve if the service was tested by SoapUi successfully , you should monitor all logs in every change test , i even forgot at first to start the database service so be carefull :)
The Soap Call
public SoapObject SoapCall(Vector<PropertyInfo> propertyInfo)
{
Integer parametersSize = propertyInfo.size();
//Initialize soap request + add parameters
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
for(int i=0;i<parametersSize;i++)
{
request.addProperty(propertyInfo.get(i));
}
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//envelope.dotNet = false; if service of type asmx .NET
envelope.setOutputSoapObject(request);
Log.d("App Log c ","c");
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try {
System.out.println(androidHttpTransport.getPort());
// Make the soap call.
//this is the actual part that will call the webservice
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
//Log.i("App Log 1 ", response.toString());
} catch (Exception e) {
e.printStackTrace();
}
// Get the SoapResult from the envelope body.
SoapObject result = (SoapObject)envelope.bodyIn;
Log.i("App Log 2 ", result.toString());
Log.i("App Log 2 ", result.getProperty(0).toString());
return result;
}
Vector<PropertyInfo> vectorProperyInfo = new Vector<PropertyInfo>();
PropertyInfo userProp = new PropertyInfo();
userProp.setName("userName");
userProp.setValue(username);
userProp.setType(String.class);
vectorProperyInfo.addElement(userProp);
PropertyInfo passProp = new PropertyInfo();
passProp.setName("pass");
passProp.setValue(password);
passProp.setType(String.class);
vectorProperyInfo.addElement(passProp);
SoapObject result = soapUtil.SoapCall(vectorProperyInfo);
if (result != null && result.getProperty(0).toString().equals("1")) {
return "LOGIN_SUCCESS";// for a student
}
P.S My Db Is Oracle and webservice is soap and used axis2-1.2 bin And tested on Android 4.0 the above error response code was 500 Internal Error