2012-07-19 128 views
0

嗨,我開發了一個調用soap webservices.it的登錄表單,成功完全爲我工作...但現在我實現了一個部分。在這裏我會做會話管理...如何製作會議管理在登錄form.please指導我。會話管理是android調用soap webservices

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

有多種方法可以實現Session Management。我建議你應該嘗試使用Cookies

新的ksoap版本(ksoap 2.5.4我猜)具有cookie支持內置,使您可以將cookie傳入和傳出應用程序。

詳細

HttpTransportSE類公開的方法調用,超出了所需的SOAP參數,也接受HeaderProperty實例的列表。它也返回一個像List。這提供了將附加頭添加到請求並查看返回的頭的能力。由於Cookie只是其中的一個標頭,因此可以使用此功能發送和接收Cookie。

Cookie簡單地從Web服務接收並作爲HTTP標頭中的標頭髮送到Web服務。爲了在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()); 

因此,會話管理,你可以只保存Cookies和設置他們的請求。

這裏有一個問題,表明How to save and return cookies to web service

信息來源:ksoap2-android and cookies

+0

如何使用上述coding.because我無法理解DIS編碼part.please幫我 – 2012-07-19 12:24:28

+0

那是什麼做的是,它是獲取響應頭的列表,然後您可以遍歷它。如果你看到我給你的問題鏈接,你會明白,它已經完成了存儲會話管理的cookie – 2012-07-19 12:27:42

+0

嗨,我不能開發做dis.please給我一些例子,清楚的編碼解釋。 – 2012-07-20 05:14:41