Android使用KSoap2包访问WebService

2015-01-30 21:36:50|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:Android, Java, 移动应用|来源:唯设编程网

Android不允许在主线程进行网络请求,所以我在新的线程的run函数完成我们的代码,KSoap使用HttpTransportSE向服务器发起情况,该对象的构造函数有两个参数,第一个是对应.asmx的完整地址,第二个参数是延时,发出请求使用HttpTransportSE的成员函数call完成,该函数第一个参数是执行的ACTION,第二个参数是封装了各种参数的SoapSerializationEnvelope对象,第三个参数是List类型的参数,可以发送请求的cookie参数,这样我们可以在多次请求之间共享session,这对应我们使用Session进行登录验证的项目中非常实用,请求返回以后,我们将对应的session参数保存在静态成员变量mSessionHeader中,供下次请求使用。返回内容我们使用SoapSerializationEnvelope对象的getResponse函数得到,在输入的Handler类型参数中完成消息的处理。

同时,为了正常访问网络,我们需要在AdroidManifest.xml中请求相应的权限,如下所示:

    </application>
    <!-- 访问网络的权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
</manifest>

下面我们给出一个该函数的调用的测试例子:

    //登录按钮
    btn_login = (Button)findViewById(R.id.btn_login);
    btn_login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String URL = "/WebService/test_webService.asmx";
            String METHOD_NAME = "login";
            LinkedHashMap<String, Object> values = new LinkedHashMap<String, Object>();
            values.put("userName",input_userName.getText().toString());
            values.put("passWord", input_pass.getText().toString());
            //发送请求
            KSoap2Utility.doTransaction(URL, METHOD_NAME, values, getResources(),
                    new Handler() {
                        public void handleMessage(android.os.Message msg) {
                            //返回消息
                            String strMsg = msg.obj.toString();
                            if (strMsg.startsWith("登录成功")) {
                                //new 一个Intent对象,并指定要启动的class
                                Intent intent = new Intent();
                                intent.setClass(LoginActivity.this,
                                        UserZoneActivity.class);
                                startActivity(intent);
                                LoginActivity.this.finish();
                            } else {
                                // 将WebService得到的结果返回给TextView
                                Toast.makeText(getApplicationContext(), msg.obj.toString(), Toast.LENGTH_LONG).show();
                            }
                        }
                    });
        }
    });

我们将登录按钮的点击监听器绑定了点击事件,将用户输入的用户名和密码作为参数,使用KSoap2调用test_webService.asmx中的login函数进行验证,验证成功启动用户中心对应的Activity,失败则使用Toast显示提示信息。


<123>
发表评论0条 】
网友评论(共?条评论)..
Android使用KSoap2包访问WebService