2012-07-19 123 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