您好我开发了一个登录表单,调用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应用程序中进行会话。 请给我一些想法。
答案 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并根据请求进行设置。
的问题