android - 在android中调用soap webservices的登录表单

标签 android mysql android-intent

您好,我开发了一个调用 soap webservices 的登录表单。它对我来说是完全成功的……但现在我实现了这一部分。当我的登录详细信息成功时,意味着它会进入下一个 Activity 。 怎么做..我面临一些困难。 编码部分如下。

dis 是我的 webservices java 项目:

package com.userlogin.ws;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

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

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

 }

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

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

  }

  }

dis 是我的 android 端编码部分:

package com.androidlogin.ws;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.content.Intent;

public class AndroidLoginExampleActivity extends Activity {
private final String NAMESPACE = "http://ws.userlogin.com";
private final String URL = "http://192.168.1.168:8085/Login/services/Login?wsdl";
private final String SOAP_ACTION = "http://ws.userlogin.com/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.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){

    }

    Button registerScreen = (Button) findViewById(R.id.btn_login);

    // Listening to register new account link
    registerScreen.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // Switching to Register screen
            Intent i = new Intent(getApplicationContext(), RegisterActivity.class);
            startActivity(i);
        }
      });
   }

   }

这里当我点击按钮时意味着它被重定向到下一个 Activity ..但我希望如果成功登录意味着它进入下一个 Activity ......请在哪里放置 dis Intent 编码或告诉我该怎么做...请指导我。

最佳答案

据我了解您的问题,您必须检查您的登录网络服务的响应调用并在此基础上设定条件。

如果您的响应包含成功!状态,则启动NewActivity,否则显示登录失败DialogToast

例如:

你的逻辑应该在这里开始新的 Activity,

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

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

    if(status.equals("Success!"))
     {
       Intent i = new Intent(getApplicationContext(), NextActivity.class);
       startActivity(i);    
     }
    else
     {
         // Code for Login failure 
     }
   }
    catch(Exception e){
   }

关于android - 在android中调用soap webservices的登录表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11516813/

相关文章:

android - 数据绑定(bind) : ObservableField of custom object it is not working properly

Android Google App Engine OAuth 困难

php - Windows 7 64 位上的 Xampp 安装错误

mysql - 更改 root 密码后 PHPMyAdmin 无法连接

android - 使用 Google Maps v2 膨胀 SupportMapFragment 会导致 ClassNotFoundException

java - 在 SD 卡上组织数据以便快速搜索的最佳方式

android - 以下 get(1) 函数的作用是什么?

mysql - 具有唯一约束的批量插入语句

android.content.ActivityNotFoundException : Unable to find explicit activity class - how to fix it?

java - Android:如何在不将屏幕截图保存到 SD 卡的情况下在电子邮件中发送屏幕截图?