Android 使用.net开发的webservice做用户登录验证

Android 使用.net开发的webservice做用户登录验证
    在学习Webservice 的时候我也在网上找了相关的资料及源码,但是关于WebService的用户登录验证网上只有一个版本,并且这个版本是一个比较系统的登录验证系统,包含数据存储、进程、多用户处理等,关于WebService数据处理的部分也都是在进程中处理的。对于一个初学者来说希望的是,在短时间内理解并使用WebService,而不是复制照搬网上现成的代码。我做这分总结是对自己学习WebService的总结,也希望能简化网上的Webservice教程。
    本文使用的WebService在 WebService专栏有详细的创建步骤。
    ①新建Android项目(这对初学者也问题不大,另网上也有详细的教程)
    ②为Android项目添加Ksoap-android包
        Google为Android平台开发WebService客户端提供了Ksoap-android项目,但这个项目并未直接集成在Android平台中。 Ksoap-android下载地址。
        将下载的文件放在项目文件夹下Libs文件夹中。右键单击项目选择“Refresh”(刷新)。
        在Eclipse中右击项目,在弹出的右键菜单中选择“Build Path”菜单项,选择“configure build path ...”在弹出的对话框中选择“Libraries”,单击“Add JARs...”找到刚刚添加的文件。在Java Build Path对话框中选择“Order and Export",然后在添加的Ksoap-android包前打上对勾,OK。
    ③ 分析WebService
    在IE地址中输入WebService地址,实例:
    http://192.168.1.213:9006/WS_Base.asmx(本地WebService)
    http://webservice.36wu.com/ExpressService.asmx 身份证查询接口(网络免费WebService)
   点击“服务说明”进入服务分析 图例解析:
    ④实例关键代码及函数说明
    public class MainActivity extends Activity {

final static String SERVICE_NS = "http://tempuri.org/"; //Webservice所在命名空间
final static String SERVICE_URL = "http://192.168.1.153:9006/WS_Base.asmx";//Webservice服务地址
private EditText txt3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt3=(EditText)findViewById(R.id.txt3);
String methodName = "AuthenticateLogin";//要使用的接口函数
//创建HttpTransportSE对象,该对象用于调用WebService操作
HttpTransportSE ht = new HttpTransportSE(SERVICE_URL);
ht.debug = true;
//创建SoapSerializationEnvelope对象,它是HttpTransportSE调用WebService时消息
//的载体;客户端需要传入的参数,需要通过SoapSerializationEnvelope对象的bodyOut属性
//传给服务器;服务器响应生成的SOAP消息也通过该对象的bodyIn属性来获取。
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//创建SoapObject对象,创建对象时需要传入调用Web Service的命名空间、方法名。
SoapObject soapObject = new SoapObject(SERVICE_NS, methodName);
//SoapObject 对象的addProperty(String name,Object value)方法将参数传递给服务端
//该方法的name参数指定参数名;value参数指定参数值。
//如果方法存在多个参数,多次调用addProperty即可。
soapObject.addProperty("userName","wxdxh");
soapObject.addProperty("password","wxdxh");
envelope.bodyOut = soapObject;
//设置WebService的开发类型
envelope.dotNet = true;
try 
{
//调用远程WebService,call()方法的参数意义 第一个参数:命名空间+方法名,
//第二个参数:SoapSerializationEnvelope对象
ht.call(SERVICE_NS+methodName, envelope);
if(envelope.getResponse()!=null)
{
//SoapSerializationEnvelope对象的bodyIn属性返回一个SoapObject对象,
//该对象就代表了WebService的返回消息。
//WebService在服务器端返回值是String类型的数值的时候使用Object代替SoapObject
SoapObject result = (SoapObject)envelope.bodyIn;
Object detail1 = (Object) result.getProperty(0);
txt3.setText(detail1.toString());
}
}
catch (IOException e)
{
e.printStackTrace();
}
catch (XmlPullParserException e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
    ⑤WebService 小结
    1、soapObject.appPeroperty()实现传递一个以上参数时,重写参数即可例如传递用户名和登录密码
    soapObject.addProperty("userName","wxdxh");
    soapObject.addProperty("password","wxdxh");
    2、call()方法的参数意义 第一个参数:命名空间+方法名,第二个参数:SoapSerializationEnvelope对象实例:
    String methodName = "AuthenticateLogin";
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    ht.call(SERVICE_NS+methodName, envelope);
    3、WebService在服务器端返回值是String类型的数值的时候使用Object代替SoapObject。实例:
    SoapObject result = (SoapObject)envelope.bodyIn;
    Object detail1 = (Object) result.getProperty(0);
4、在做webservice的时候要赋予程序上网的权限
在AndroidManifest.xml中赋予应用权限,添加如下代码
<uses-permission android:name="android.permission.INTERNET"/>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页