0

こんにちは、soap webservices を呼び出す 1 つのログイン フォームを開発しました。それは完全に機能しました...しかし、今はその 1 つの部分を実装しています。ここでセッション管理を行います...dis ログイン フォームでセッション管理を行う方法を教えてください。 .

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アプリケーションでセッションを作成する方法を教えてください。アイデアを教えてください。

4

1 に答える 1

1

を実装するにはさまざまな方法がありますSession Management。使ってみることをお勧めしますCookies

新しいksoapリリース(ksoap 2.5.4だと思います)には、アプリケーションにCookieを出し入れできるCookieサポートが組み込まれています。

詳細

このクラスは、必要なSOAPパラメーターを超えて、インスタンスHttpTransportSEのリストも受け入れるメソッド呼び出しを公開します。HeaderProperty同様のリストも返します。これにより、リクエストに追加のヘッダーを追加し、返されたヘッダーを確認することができます。Cookieはそれらのヘッダーの1つにすぎないため、この機能を使用して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を保存して、リクエストに応じて設定することができます。

これは、 Cookieを保存してWebサービスに返す方法を示す質問です。

情報源:ksoap2-androidおよびcookies

于 2012-07-19T11:53:52.507 に答える