如何在Android中调用登录Web服务

如何在Android中调用登录Web服务,android,web-services,android-webservice,Android,Web Services,Android Webservice,我是安卓新手,尝试为登录系统开发安卓应用程序。我已经用Java编写了用于登录和在android中调用的web服务,但我无法在android中调用这些web服务,请帮助我 我的Java Web服务:- public class Login { public String authentication(String userName,String password){ String retrievedUserName = ""; String retrievedPassw

我是安卓新手,尝试为登录系统开发安卓应用程序。我已经用Java编写了用于登录和在android中调用的web服务,但我无法在android中调用这些web服务,请帮助我

我的Java Web服务:-

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;

     }
}

我的主要活动是:-

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) {

    }
}

}

在android中,您可以通过多种方式调用web服务

  • 截击
  • 改造
  • HTTP URL连接
  • 截击示例

     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);
    }
    

    通过阅读本示例,您可以调用web service。并获得响应

    当您尝试调用api时会引发哪些异常?当我输入存储在数据库中的用户名和密码时,该数据库为admin和123,但在成功登录的android emulator上不会显示
      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) {
            }
        });
    }
    
     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();
        }
    }