会话管理是android调用soap web服务

时间:2012-07-19 11:13:32

标签: android session-management

您好我开发了一个登录表单,调用soap webservices.it成功完全为我工作...但现在我实现了一个部分。我将进行会话管理...如何以登录形式进行会话管理。请指导我。

dis是我的android编码部分:

  package com.soap;
  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.content.Intent;
   import android.os.Bundle;
   import android.view.View;
   import android.widget.Button;
   import android.widget.CheckBox;
   import android.widget.EditText;
   import android.widget.TextView;
   import android.content.SharedPreferences;
   import android.content.Context;
   public class Login extends Activity {
   private static final String SPF_NAME = "vidslogin";
   private static final String USERNAME = "username";
   private static final String PASSWORD = "password";

   EditText userName,userPassword;
   private final String NAMESPACE = "http://ws.userlogin.com";
   private final String URL = "http://192.168.1.168:8085/LoginSoap/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.login);

 Button logout = (Button) findViewById(R.id.btn_logout);
  logout.setOnClickListener(new View.OnClickListener() {

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

 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应用程序中进行会话。 请给我一些想法。

1 个答案:

答案 0 :(得分:1)

有多种方法可以实现Session Management。我建议您尝试使用Cookies

新的ksoap版本(我猜是ksoap 2.5.4)内置了cookie支持,使您可以将Cookie传入和传出应用程序。

<强>详情

HttpTransportSE类公开了方法调用,该调用超出了所需的SOAP参数,也接受了HeaderProperty个实例的List。它还返回一个类似List。这提供了向请求附加其他标头并查看返回的标头的功能。由于cookie只是其中一个标题,因此可以使用此工具发送和接收Cookie。

简单地从Web服务接收并作为HTTP前导码中的标头发送到Web服务的Cookie。为了在ksoap2-android中使用cookie,需要保存任何返回的cookie,并在随后调用Web服务时返回它们。

示例

  List respHeaders = android_http.call(SOAP_ACTION, envelope2, reqHeaders); 
  for(int ix=0; ix<respHeaders.size(); ix++) { 
  HeaderProperty hp = (HeaderProperty)respHeaders.get(ix); 
  System.out.println("Header"+ix+"="+hp.getKey()+" / "+hp.getValue()); 

因此,对于会话管理,您可以保存Cookie并根据请求进行设置。

以下是显示How to save and return cookies to web service

的问题

资讯来源:ksoap2-android and cookies