.net 客户端调用java或.net webservice进行soapheader验证
.net 客户端调用java或.net webservice进行soapheader验证
最近项目中有业务需要跨平台调用web服务,客户端和服务器之间采用非对称加密来保证数据的安全性,webservice的安全验证基于soapheader。
借此机会,顺便整理一下调用.net webservice 和 java webservice 的验证方式,记录下来。
.net端web服务
1.若web服务是采用.net webservice实现,如下代码:
/// </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 externalWebService : System.Web.Services.WebService
{ public WebServiceSecurityHeader webServiceSecurityHeader = new WebServiceSecurityHeader(); BizTcmCmdrugsOrg bizTcmCmdrugsOrg = new BizTcmCmdrugsOrg(); [WebMethod,SoapHeader("webServiceSecurityHeader")]
public string HelloWorld(string name)
{
if (SecurityValidate())
{
return "安全的服务: " + name;
}
else
{
return "对不起,无权访问!";
}
} private bool SecurityValidate() { if (webServiceSecurityHeader.SecurityKey == null)
{
return false;
} if (webServiceSecurityHeader.SecurityKey.Equals(""))
{
return true;
}
else
{
return false;
}
}
2. java环境,webservice采用cxf 实现:
JAVA端web服务
a.具体 java 端 cxf 的web服务的实现如下图。
CXF配置:

b.定义拦截器:

.net端的webservice代理类和客户端代码:
1.C#引用java的webservice跟引用C#的webservice一样,引用URL就可以使用了,但是C#引用java的webservice不会自动生成soapheader,需要自己添加。


2.建立soapheader类

3. Reference.cs代理类中默认不会生成soapheader相关代码,要手动添加。有个问题,由于reference.cs中的代码是引用web服务时自动生成的,所以你添加了代码后,若重新更新引用的webservice,手工增加的代码会被清除,需要再次添加,这是个坑。

代理方法增加SoapHeader属性

4.客户端调用代码:

上面是.net调用 java web服务进行 soapheader 验证的主要过程,在以下环境中测试通过:
.net环境: win10,vs2015,
java环境:java8,cxf3.1.12,spring boot 1.5.13
.net 客户端调用java或.net webservice进行soapheader验证的更多相关文章
- 用C#.NET调用Java开发的WebService传递int,double问题
		
用C#.NET调用Java开发的WebService时,先在客户端封装的带有int属性的对象,当将该对象传到服务器端时,服务器端可以得到string类型的属性值,却不能得到int类型.double和D ...
 - Android客户端调用Asp.net的WebService
		
Android客户端调用Asp.net的WebService 我来说两句 |2011-11-23 13:39:15 在Android端为了与服务器端进行通信有几种方法:1.Socket通信2.WCF通 ...
 - delphi7调用java写的webservice,在调用的时候弹出“wssecurityhandler:request does not contain required security header”
		
delphi7调用java编写的webservice问题我用delphi7调用java写的webservice,在调用的时候弹出“wssecurityhandler:request does not ...
 - 用C#.NET调用Java开发的WebService传递int,double问题,出现java无法获得值!
		
https://www.cnblogs.com/zhbsh/archive/2013/04/22/3035477.html 用C#.NET调用Java开发的WebService时,先在客户端封装的带有 ...
 - Java与WCF交互(二):WCF客户端调用Java web service【转】
		
原文:http://www.cnblogs.com/downmoon/archive/2010/08/25/1807982.html 在上篇< Java与WCF交互(一):Java客户端调用WC ...
 - 转载——Java与WCF交互(二):WCF客户端调用Java Web Service
		
在上篇< Java与WCF交互(一):Java客户端调用WCF服务>中,我介绍了自己如何使用axis2生成java客户端的悲惨经历.有同学问起使用什么协议,经初步验证,发现只有wsHttp ...
 - .NET调用Java写的WebService
		
最近遇到一个用.net调用java写的webservice的应用,对方程序员提供了一个后缀为wsdl的文件,这个跟.Net里面生成的wsdl文件差不多,起初没什么概念就查了点资料,知道可以将这个wsd ...
 - C# 调用Java Webservice 加入SoapHeader 验证信息
		
C#调用java 编写的webservice时不会自动生成 soapheader 类接口的,需要改动Reference.cs. 在生成的代理类referende.cs中进行如下操作: 一.在声明pub ...
 - delphi调用java编写的webservice
		
delphi调用java编写的webservice JAVApojo: public class GroupInfo implements Serializable{ private stati ...
 
随机推荐
- 服务器与客户端连接 & 聊天机器人
			
服务器运行当显示 E:\pycharm\python\venv\Scripts\python.exe E:/pycharm/python/协议/机器人聊天服务器.py 开始监听 accept 说明服务 ...
 - 下面程序的输出结果是____ A:11,10 B:11,11 C:10,10 D:10,11 int x=10;  int y=x++;  printf("%d,%d",(x++,y),y++);
			
下面程序的输出结果是____ A:11,10 B:11,11 C:10,10 D:10,11 int x=10; int y=x++; printf("%d,%d",(x++,y) ...
 - Lapack求解线性方程组
			
可参见这两个页面: 1. http://www.culatools.com/dense/lapack/ 2. http://www.netlib.org/lapack/lug/node1.html 根 ...
 - lldb调试mysql 插件命令
			
# attach process llvm process attach --pid 64924 # 添加断点 breakpoint set -n dispatch_command(enum_ ...
 - css给html添加效果
			
<!doctype html> <html> <head> <title>EasyMall注册界面</title> <meta htt ...
 - Ubuntu16.04 ionic(jdk,sdk,gradle)环境搭建完全攻略
			
在Ubuntu16.04当中搭建一个ionic环境还是按照官方教程的来,主要问题是首先要把JDK,SDK搭好,环境变量配好.本文中给的包的下载请不要直接用浏览器下载,很慢,尽量用wget 下载,重要的 ...
 - 浅析Hashmap和Hashtable
			
一.Hashmap不是线程安全的,而Hashtable是线程安全的 通过查看源码可以发现,hashmap类中的方法无synchronized关键字,而hashtable类中的方法有synchroniz ...
 - 由于SVN导致桌面图标都带有?标记
			
在桌面创建一个记事本文件,然后吧这句话复制进去 for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.sv ...
 - Thread 详解
			
转自:http://www.mamicode.com/info-detail-517008.html 目录(?)[-] 一扩展javalangThread类 二实现javalangRunnable接口 ...
 - Python函数的一点用法
			
#python的基本语法网上已经有很多详细的解释了,写在这里方便自己记忆一些 BIF是python内置的函数,任何一门语言都能用来创造函数,python也不例外 1.创建一个函数 def func() ...