Android调用.NET webservice实现用户登录验证
2015-12-11 23:17
513 查看
首先我先把WebService的地址写出来 这个Webservice是我自己写上传到服务器上的,大家可以直接调用来做测试。
http://shop.clovey.com.cn/AndroidZM.asmx?op=Login
这个Webservice连接的是我的数据库 在这里只实现了一个登录功能
传入的参数为name,password.
如果失败就返回
成功的话返回
账号为cxcx 密码为123456 欢迎大家做测试
调用WebSercive需要使用到Ksoap2这个jar包下载地址
下载解压之后得到ksoap2-android-assembly-3.1.0-jar-with-dependencies.jar这个jar包.
在这里我使用的是Android studio 2.0,将这个jar包放置在libs目录下,右键jar包选择Add As Library即可导入到项目中。
接下来开始书写代码。
首先记得 在AndroidManifest.xml 加入 允许访问 Internet
接着定义几个常量,是我们接口的几个参数。
METHOD_NAME是我们需要调用的方法名
NAMESPACE是命名空间名字
URL是我们接口的地址
SOAP_ACTION是我们SOAP协议的目的指向
这些都可以在WebService中找到。
接下来写一个Call()函数,里面调用SOAP2连接WebService.
Call()方法写好了 接下来我们去调用
在这里我们就不写具体调用的过程 设置一个Listener
这是其中的一部分代码 当case登录按钮点击时 new一个新线程实现call()方法并向handler发送信息。
!!!!注意:
必须要new一个新线程去进行网络连接 不然会报错 而且没有错误提示信息。
这是Handler的实现
这样我们的WebService就调用成功了
这是最简单的WebService 在这里做下记录 希望大家不吝赐教。
http://shop.clovey.com.cn/AndroidZM.asmx?op=Login
这个Webservice连接的是我的数据库 在这里只实现了一个登录功能
传入的参数为name,password.
如果失败就返回
<string xmlns="http://tempuri.org/">{"Name":"Error"}</string>
成功的话返回
<string xmlns="http://tempuri.org/">{"Name":"常风"}</string>
账号为cxcx 密码为123456 欢迎大家做测试
调用WebSercive需要使用到Ksoap2这个jar包下载地址
下载解压之后得到ksoap2-android-assembly-3.1.0-jar-with-dependencies.jar这个jar包.
在这里我使用的是Android studio 2.0,将这个jar包放置在libs目录下,右键jar包选择Add As Library即可导入到项目中。
接下来开始书写代码。
首先记得 在AndroidManifest.xml 加入 允许访问 Internet
<uses-permission android:name="android.permission.INTERNET" />
接着定义几个常量,是我们接口的几个参数。
private static final String METHOD_NAME = "Login"; private static final String NAMESPACE = "http://tempuri.org/"; private static final String URL = "http://shop.clovey.com.cn/AndroidZM.asmx"; final String SOAP_ACTION = "http://tempuri.org/Login"; private int flag=0;//返回值结果状态 0是登录失败 1是登录成功 2是调用失败(网络出错等各种原因)
METHOD_NAME是我们需要调用的方法名
NAMESPACE是命名空间名字
URL是我们接口的地址
SOAP_ACTION是我们SOAP协议的目的指向
这些都可以在WebService中找到。
接下来写一个Call()函数,里面调用SOAP2连接WebService.
public void call() { try { SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); request.addProperty("name",username.getText().toString()); //这个是传递参数的.这是name参数 request.addProperty("password",password.getText().toString());//这是password参数 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11); envelope.dotNet = true;//这个标明是否是.NET的WebService envelope.setOutputSoapObject(request);//设置请求参数 HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);//指向URL androidHttpTransport.call(SOAP_ACTION, envelope);//这是与WebService直接通信的方法 System.out.println("调用WebService成功");//打印调用成功 Object result =envelope.getResponse();//获取得到的值 在这里我们WebService返回的是JSon数据串 JSONObject jsonObject = null;//调用JSONObject类帮助我们解析json数据串 try{jsonObject = getJSON(result.toString()); }//得到Json对象 catch (JSONException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } String names="";//返回值接受的参数 try { names =jsonObject.getString("Name");//取返回值 if(names.equals("Error")) { //如果登录失败则不做改变 } else flag=1;//登录成功 } catch (JSONException e) { flag =2;//产生异常 } } catch (Exception e) { System.out.println(e.getMessage()); flag =2;//产生异常 Toast.makeText(LoginActivity.this,e.getMessage(),Toast.LENGTH_SHORT).show(); } } public JSONObject getJSON(String sb) throws JSONException { return new JSONObject(sb); }
Call()方法写好了 接下来我们去调用
在这里我们就不写具体调用的过程 设置一个Listener
case R.id.Login: new Thread(new Runnable() { @Override public void run() { Looper.prepare(); call(); handler.sendEmptyMessage(0); } }).start(); break;
这是其中的一部分代码 当case登录按钮点击时 new一个新线程实现call()方法并向handler发送信息。
!!!!注意:
必须要new一个新线程去进行网络连接 不然会报错 而且没有错误提示信息。
Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if(flag==0) { Toast.makeText(LoginActivity.this,"账号名或密码错误,请重新输入!",Toast.LENGTH_SHORT).show(); } else if(flag==2) { Toast.makeText(LoginActivity.this,"网络连接超时!",Toast.LENGTH_SHORT).show(); } else{ Toast.makeText(LoginActivity.this,"登录成功!欢迎登录:"+txtWeather,Toast.LENGTH_SHORT).show(); } } };
这是Handler的实现
这样我们的WebService就调用成功了
这是最简单的WebService 在这里做下记录 希望大家不吝赐教。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件