2

こんにちは、soap webservices を呼び出す 1 つのログイン フォームを開発しました。それは完全に機能しました...しかし、今は 1 つの部分を実装しています。ログインの詳細が成功すると、次のアクティビティに進むことを意味します。どうすればいいですか..ここでいくつかの困難に直面しています。コーディング部分は以下です。

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

   }

ここでボタンをクリックすると、次のアクティビティにリダイレクトされることを意味します..しかし、ログインに成功した場合は、次のアクティビティに進むことを意味する必要があります...ガイドしてください。

4

3 に答える 3

1

あなたの質問を理解しているので、ログインWebサービス呼び出しからの応答を確認し、それに基づいて条件を作成する必要があります。

回答に成功が含まれている場合!ステータスを開始してからNewActivityを開始します。それ以外の場合は、ログインの失敗Dialogまたはを表示しToastます。

例えば:

新しいアクティビティを開始するために、ロジックをここに配置する必要があります。

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){
   }
于 2012-07-17T06:08:36.263 に答える