使用Ksoap2调用Web Service加入SoapHeader
关于这个问题,如果使用百度都是前篇一律的代码,好不容易上了google才找到完整的方法,这里讲所有的代码都贴出来与大家分享。
首先是.NET写的后台代码

/// <summary>
/// SoapHeader
/// </summary>
public class OwnSoapHeader:SoapHeader
{
public string UserName { get; set; }
public string Password { get; set; }
} /// <summary>
/// WebService1 的摘要说明
/// </summary>
[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了,能够接收到服务端回发的用户数据
使用Ksoap2调用Web Service加入SoapHeader的更多相关文章
- php5调用web service
工作中需要用php调用web service接口,对php不熟,上网搜搜,发现关于用php调用web service的文章也不多,不少还是php4里用nusoap这个模块调用的方法,其实php5里已经 ...
- 通过ksoap2-android来调用Web Service操作的实例
import java.io.IOException; import org.ksoap2.SoapEnvelope;import org.ksoap2.serialization.SoapObjec ...
- php5调用web service (笔者测试成功)
转自:http://www.cnblogs.com/smallmuda/archive/2010/10/12/1848700.html 感谢作者分享 工作中需要用php调用web service接口, ...
- C#使用SOAP调用Web Service
程序代码 using System;using System.IO;using System.Net;using System.Text; namespace ConsoleApplication1{ ...
- ORACLE存储过程调用Web Service
1. 概述 最近在ESB项目中,客户在各个系统之间的服务调用大多都是在oracle存储过程中进行的,本文就oracle存储过程调用web service来进行说明.其他主流数据库,比如mysql和sq ...
- C#开发和调用Web Service
http://blog.csdn.net/h0322/article/details/4776819 1.1.Web Service基本概念 Web Service也叫XML Web Service ...
- 使用Android应用调用Web Service
Java本身提供了丰富的Web Service支持,比如Sun公司指定的JAX-WS 2规范,还有Apache开源组织所提供的Axis1.Axis2.CXF等,这些技术不仅可以用于非常方便地对外提 ...
- Dynamic CRM 2013学习笔记(二十五)JS调用web service 实现多条记录复制(克隆)功能
前面介绍过如何克隆一条当前的记录: Dynamic CRM 2013学习笔记(十四)复制/克隆记录 , 主要是通过界面上加一个字段,单击form上的clone 按钮时,改变这个字段的值以触发插件来实现 ...
- ASP.NET调用Web Service
1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求, ...
随机推荐
- Android--------使用gson解析json文件
##使用gson解析json文件 **json的格式有两种:** **1. {}类型,及数据用{}包含:** **2. []类型,即数据用[]包含:** 下面用个例子,简单的介绍gson如何解析jso ...
- JSP学习笔记(1)
JSP本质就是一个servlet,当第一次接受到客户端请求时会被编译成对应的servlet,且对应的每个servlet在容器中只要一个实例. 1.1.JSP注释 <%-- JSP注释部分 --& ...
- react相关
react 简单入门 ant 蚂蚁金服react组件 redux 阮一峰入门react material-ui组件库 webpack入门 http://www.jianshu.com/p/42e115 ...
- 武汉科技大学ACM:1010: 零起点学算法27——判断是否直角三角形
Problem Description 输入三个整数,分别代表三角形的三条边长度,判断能否构成直角三角形 Input 输入3个整数a,b,c(多组数据,-5000000<a,b,c<500 ...
- Java内存分配和GC
Java内存分配和回收的机制概括的说,就是:分代分配,分代回收. 对象将根据存活的时间被分为:年轻代(Young Generation).年老代(Old Generation).永久代(Permane ...
- linux内核学习之进程管理------task_struct结构体
struct task_struct { volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ struct t ...
- QT学习篇: 入门(二)
库存订单界面: (1)包括序号.订单代码.订单名称.产品代码.产品类型.计划加工数量.最晚完工日期. (2)model增加临时map,用于存储库存订单. (3)后台计算完成后,会将库存订单推送给前台, ...
- JS浏览器关闭时清空cookie
function addCookie(objName,objValue,objHours){ var str = objName + "=" + escape(objValu ...
- memcache实例
<?php class demo { private $str_attr; private $int_attr; public function __get($name) { return $t ...
- hdu 4544 湫湫系列故事——消灭兔子
http://acm.hdu.edu.cn/showproblem.php?pid=4544 优先队列+贪心. #include <cstdio> #include <queue&g ...