управление сеансом - это Android, вызывающий мыльные веб-сервисы

Привет, я разработал одну форму входа в систему, вызывающую веб-службы мыла. Она успешно сработала для меня... Но теперь я реализую одну часть. Здесь я сделаю управление сеансом... как осуществляется управление сеансом в форме входа в систему. .

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. пожалуйста, дайте мне несколько идей.


person Krishna Veni    schedule 19.07.2012    source источник


Ответы (1)


Существуют различные способы реализации Session Management. Я бы посоветовал вам попробовать использовать Cookies

Новые выпуски ksoap (полагаю, ksoap 2.5.4) имеют встроенную поддержку файлов cookie, которая позволяет вам передавать файлы cookie в ваше приложение и из него.

Подробнее

Класс HttpTransportSE предоставляет вызов метода, который помимо обязательных параметров SOAP также принимает список экземпляров HeaderProperty. Он также возвращает похожий список. Это дает возможность добавлять к запросу дополнительные заголовки и просматривать возвращенные заголовки. Поскольку файл cookie — это всего лишь один из этих заголовков, можно использовать эту возможность для отправки и получения файлов cookie.

Файлы cookie, которые просто получены от веб-службы и отправлены в веб-службу в виде заголовков в преамбуле HTTP. Чтобы использовать файлы cookie с ksoap2-android, необходимо сохранить все возвращенные файлы cookie и вернуть их при последующих обращениях к веб-службе.

Пример

  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 и установить их по запросу.

Вот вопрос, который показывает, как сохранять и возвращать файлы cookie. к веб-сервису

Источник информации: ksoap2-android и файлы cookie

person Parth Doshi    schedule 19.07.2012
comment
как используется вышеуказанное кодирование. потому что я не могу понять часть кодирования. пожалуйста, помогите мне - person Krishna Veni; 19.07.2012
comment
что это делает, так это то, что он получает список заголовков ответа, а затем вы можете перебирать его. Если вы увидите ссылку на вопрос, которую я дал, вы поймете, что это делается для хранения файлов cookie для управления сеансом. - person Parth Doshi; 19.07.2012
comment
привет, я не могу разработать, не делайте этого. Пожалуйста, пришлите мне пример с четким объяснением кодирования. - person Krishna Veni; 20.07.2012