博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Ksoap2调用Web Service加入SoapHeader
阅读量:7164 次
发布时间:2019-06-29

本文共 3951 字,大约阅读时间需要 13 分钟。

关于这个问题,如果使用百度都是前篇一律的代码,好不容易上了google才找到完整的方法,这里讲所有的代码都贴出来与大家分享。

首先是.NET写的后台代码

///     /// SoapHeader    ///     public class OwnSoapHeader:SoapHeader    {        public string UserName { get; set; }        public string Password { get; set; }    }///     /// WebService1 的摘要说明    ///     [WebService(Namespace = "http://tempuri.org/")]    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]    [System.ComponentModel.ToolboxItem(false)]    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。     // [System.Web.Script.Services.ScriptService]    public class WebService1 : System.Web.Services.WebService    {        public OwnSoapHeader OwnSoapHeader;        [WebMethod]        [SoapHeader("OwnSoapHeader")]        public string Login()        {            if (OwnSoapHeader != null)            {                return OwnSoapHeader.UserName + "," + OwnSoapHeader.Password;            }            return "尚未登录";        }    }

接下来是在浏览器中浏览查看我的接口,这里面有很重要的信息,包含了SoapHeader的名字以及参数

随后就是使用Ksoap2调用我的接口了

private void DoLogin() {        new Thread() {            @Override            public void run() {                Looper.prepare();                // TODO Auto-generated method stub                String sNameSpace = "http://tempuri.org/";                String sMethodName = "Login";                String sActionString = "http://tempuri.org/Login";                String sURL = "http://192.168.1.101:8088/WebService1.asmx";                SoapObject rpc = new SoapObject(sNameSpace, sMethodName);          //在这里加入了SoapHeader                Element[] header = new Element[1];         //OwnSoapHeader与上图红色标记处名字一致                header[0] = new Element().createElement(sNameSpace, "OwnSoapHeader ");           //UserName上图红色标记处名字一致                Element username = new Element().createElement(sNameSpace,                        "UserName");                username.addChild(Node.TEXT, "admin");                header[0].addChild(Node.ELEMENT, username);           //Password上图红色标记处名字一致                Element pass = new Element().createElement(sNameSpace,                        "Password");                pass.addChild(Node.TEXT, "123");                header[0].addChild(Node.ELEMENT, pass);                SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(                        SoapEnvelope.VER12);                envelope.headerOut = header;                envelope.bodyOut = rpc;                envelope.dotNet = true;                envelope.setOutputSoapObject(rpc);                HttpTransportSE ht = new HttpTransportSE(sURL);                SoapObject soapObject = null;                try {                    ht.call(sActionString, envelope);                    soapObject = (SoapObject) envelope.bodyIn;                } catch (IOException ex) {                    // TODO Auto-generated catch block                    ex.printStackTrace();                } catch (XmlPullParserException ex) {                    // TODO Auto-generated catch block                    ex.printStackTrace();                }                Bundle result = new Bundle();                if (soapObject != null) {                    result.putString("result", soapObject.toString());                } else {                    result.putString("result", sURL);                }                Message msg = new Message();                msg.setData(result);                msg.what = 1;                handler.handleMessage(msg);                Looper.loop();            }        }.start();    }    Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            // TODO Auto-generated method stub            if (msg.what == 1) {                Bundle result = msg.getData();                String text = result.getString("result");                Toast.makeText(MainActivity.this, text, Toast.LENGTH_LONG)                        .show();            }        }    };

 至此已经全部OK了,能够接收到服务端回发的用户数据

转载地址:http://qjmwm.baihongyu.com/

你可能感兴趣的文章
APScheduler BackgroundScheduler
查看>>
lvs-nat与lvs-dr配置
查看>>
『中级篇』容器的技术概述(二)
查看>>
Apache awstats安装报错解决过程适合初学者
查看>>
Vsftp安装及配置虚拟用户
查看>>
JVM内存区域
查看>>
DNS的视图功能的简单配置。
查看>>
linux和windows互传文件/用户配置文件和密码配置文件/用户组管理/用户管理
查看>>
通过javascript把图片转化为字符画
查看>>
OpenJPA 一些难搞的查询
查看>>
设置button的样式,使得按钮的图片在上面,文字在图片的下面
查看>>
MySQL之函数、存储过程和触发器
查看>>
完整版的OpenLDAP搭建全过程
查看>>
java反射学习总结
查看>>
104. ftl 小数位处理
查看>>
Cannot open /usr/local/varnish/var/varnish/test.localdomain/_.vsm: No such file or directory
查看>>
我的VIM -- vimrc配置
查看>>
Tengine ngx_http_upstream_check_module 健康功能检测使用
查看>>
将数组A中的内容和数组B中的内容进行交换。(数组一样大)
查看>>
Python35 events(事件)、队列
查看>>