How to call Login Web Services in Android

I am new in android and try to develop android application for login system. I have written web services in Java for login and call it in android but I am not able to call these web services in android please help me.

My Java Web Services:-

public class Login {

public String authentication(String userName,String password){

      String retrievedUserName = "";
      String retrievedPassword = "";
      String status = "";
      try{

       Class.forName("com.mysql.jdbc.Driver");
       Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/androidlogin","root","root");
       PreparedStatement statement =  con.prepareStatement("SELECT * FROM user WHERE username = '"+userName+"'");
       ResultSet result = statement.executeQuery();



       while(result.next()){
        retrievedUserName = result.getString("username");
        retrievedPassword = result.getString("password");
        }

     //  System.out.println(retrievedUserName);
      // System.out.println(retrievedPassword);

       if(retrievedUserName.equals(userName)&&retrievedPassword.equals(password)){
        status = "Success!";
       }

       else{
        status = "Login fail!!!";
       }

      }
      catch(Exception e){
       e.printStackTrace();
      }
      return status;

     }

}

My android mainActivity is:-

public class MainActivity extends Activity {

private final String NAMESPACE = "http://ws.webapp.org/";
private final String URL = "http://localhost:8086/WebApp/services/Login?wsdl";
private final String SOAP_ACTION = "http://ws.webapp.org/authentication";
private final String METHOD_NAME = "authentication";

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button login = (Button) findViewById(R.id.btn_login);
    login.setOnClickListener(new View.OnClickListener() {

        public void onClick(View arg0) {
            loginAction();

        }
    });
}

private void loginAction() {
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

    EditText userName = (EditText) findViewById(R.id.tf_userName);
    String user_Name = userName.getText().toString();
    EditText userPassword = (EditText) findViewById(R.id.tf_password);
    String user_Password = userPassword.getText().toString();

    // Pass value for userName variable of the web service
    PropertyInfo unameProp = new PropertyInfo();
    unameProp.setName("userName");// Define the variable name in the web
                                    // service method
    unameProp.setValue(user_Name);// set value for userName variable
    unameProp.setType(String.class);// Define the type of the variable
    request.addProperty(unameProp);// Pass properties to the variable

    // Pass value for Password variable of the web service
    PropertyInfo passwordProp = new PropertyInfo();
    passwordProp.setName("password");
    passwordProp.setValue(user_Password);
    passwordProp.setType(String.class);
    request.addProperty(passwordProp);

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
            SoapEnvelope.VER11);
    envelope.setOutputSoapObject(request);
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

    try {
        androidHttpTransport.call(SOAP_ACTION, envelope);
        SoapPrimitive response = (SoapPrimitive) envelope.getResponse();

        TextView result = (TextView) findViewById(R.id.tv_status);
        result.setText(response.toString());

    } catch (Exception e) {

    }
}

}

Answers


In android many ways you can call a web service

  1. Volley
  2. Retrofit
  3. HTTP URL Connection

Volley Example

 private void callWebServicePost() {
    String postUrl = "http://URL";

    final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, postUrl, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            Log.e("response", response.toString());
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
        }
    }) {
        @Override
        protected Map<String, String> getParams() throws com.android.volley.AuthFailureError {
            Map<String, String> params = new HashMap<>();
            params.put("inc_id", "0");
            params.put("device_date", "");
            params.put("device_name", "");
            params.put("mac_address", "");
            return params;
        }

    };

    Volley.newRequestQueue(this).add(jsonObjectRequest);
}

Retrofit Post Example

  private void RetroWebServicePost() {
    RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint("http:/URL").build();
    WeatherInterface weatherInterface = restAdapter.create(WeatherInterface.class);
    weatherInterface.getAttendance(new Callback<AttendancePojo>() {
        @Override
        public void success(AttendancePojo attendancePojo, retrofit.client.Response response) {
            try {
                Attendance_data data[];
                data = attendancePojo.getPostModel().getAttendance_data();
                List<String> attendence = new ArrayList<>();
                for (int i = 0; i < data.length; i++) {
                    attendence.add(data[i].toString());
                }
                Log.e("response", attendence.toString());
                reponseData.setText(attendence.toString());
            } catch (NullPointerException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        @Override
        public void failure(RetrofitError error) {
        }
    });
}

HTTP Url connection post Example

 private void reqPost() throws IOException {
    String postWebUrl = "http:URL";
    URL url = new URL(postWebUrl);
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();

    try {

        connection.setRequestMethod("POST");
        connection.setDoInput(true);
        connection.setDoOutput(true);
        connection.connect();

        String urlParameters = "inc_id=" + URLEncoder.encode("0", "UTF-8")
                + "&device_date="
                + URLEncoder.encode("", "UTF-8")
                + "&device_name="
                + URLEncoder
                .encode("",
                        "UTF-8") + "&mac_address="
                + URLEncoder.encode("", "UTF-8");
        //SEND REEQUEST
        DataOutputStream dataOutputStream = new DataOutputStream(
                connection.getOutputStream());
        dataOutputStream.writeBytes(urlParameters);
        dataOutputStream.flush();
        dataOutputStream.close();

        //GET RESPONSE
        InputStream inputStream = connection.getInputStream();
        BufferedReader rd = new BufferedReader(new InputStreamReader(inputStream));
        String line;
        StringBuffer response = new StringBuffer();
        while ((line = rd.readLine()) != null) {
            response.append(line);
            response.append('\r');
        }
        rd.close();
        webResponse = response.toString();
        Log.e("response", response.toString());

    } catch (Exception e) {

        e.printStackTrace();

    } finally {
        connection.disconnect();
    }
}

By going through this examples you can call web service.And get a response


Need Your Help

Giving up the time slice for current thread in C++

c++ multithreading c++11

Are the following statements equivalent ways for giving up the time slice for the current thread?