C#读取JAVA的WSSE接口的调用代码:

用webclient 方式:

    /// <summary>
/// 调用java cxf ws_security加密的服务wcf客户端对应的加密类
/// </summary>
public class WssSecurity
{
private byte[] _nonce ; private string _nonceStr = GetNoce(); private readonly string _pass; //密码
private DateTime _created; public WssSecurity(string p, DateTime t)
{
_pass = p;
_created = t;
} /// <summary>
/// 获取UTC时间
/// </summary>
/// <returns></returns>
public string GetCreatedAsString()
{
return XmlConvert.ToString(_created.ToUniversalTime(), "yyyy-MM-ddTHH:mm:ss.fffZ");
} /// <summary>
/// 获取加密的密码
/// </summary>
/// <returns></returns>
public string GetPasswordDigestAsBase64()
{
//RandomNumberGenerator rndGenerator = new RNGCryptoServiceProvider();
//rndGenerator.GetBytes(_nonce);
// get other operands to the right format _nonce = Encoding.UTF8.GetBytes(_nonceStr);
var newDate = GetCreatedAsString();
byte[] time = Encoding.UTF8.GetBytes(newDate);
byte[] pwd = Encoding.UTF8.GetBytes(_pass);
var operand = new byte[_nonce.Length + time.Length + pwd.Length];
Array.Copy(_nonce,operand,_nonce.Length);
Array.Copy(time,,operand,_nonce.Length,time.Length);
Array.Copy(pwd,,operand,_nonce.Length + time.Length,pwd.Length); // create the hash
SHA1 sha1 = SHA1.Create();
return Convert.ToBase64String(sha1.ComputeHash(operand));
}
private static String[] chars = { "", "", "", "", "", "", "", "", "", "", "a", "b", "c", "d", "e",
"f" };
public static String GetNoce(int length) {
StringBuilder sb = new StringBuilder();
Random r=new Random();
for(int i = ; i < length; i++) {
sb.Append(chars[r.Next()]);
}
return sb.ToString();
} /// <summary>
/// 获取Nonce
/// </summary>
/// <returns></returns>
public string GetNonceAsBase64()
{ return _nonceStr;
}
}

操作方法

            string postString = "{\"devices\":[\"1541351315\"]}";
byte[] postData = Encoding.UTF8.GetBytes(postString);
var wss = new WssSecurity("137E000470C1E8E2FA4B1348AC5B9D7A", DateTime.Now);
WebClient client = new WebClient();
client.Headers.Add("Authorization", "WSSE profile=\"UsernameToken\"");
client.Headers.Add("X-WSSE",
"UsernameToken Username=\"ServiceDevices\", PasswordDigest=\"" + wss.GetPasswordDigestAsBase64() + "\", Nonce=\"" +
wss.GetNonceAsBase64() + "\", Created=\"" + wss.GetCreatedAsString() + "\"");
client.Headers.Add("Content-Type","application/x-www-form-urlencoded;application/xml"); byte[] responseData = client.UploadData("https://xx.com/open/getDeviceInfo","POST",postData);//得到返回字符流

C#调用JAVA接口WSSE方式用WebClient方式的更多相关文章

  1. android NDK 实用学习(五)-c++端调用java接口

    1,阅读此文章前请阅读前面文章,以免阅读出现障碍: android NDK 实用学习(一)-获取java端类及其类变量 android NDK 实用学习(二)-java端对象成员赋值和获取对象成员值 ...

  2. C#调用java接口报“Fault occurred while processing”异常问题

    服务在通常项目中总是要用到的C#的webservice.wcf,还有第三方的,比如java服务.一般来说调用都不会有什么问题,因为服务的标准都是一样的.要注意的就是:1.参数个数匹配:2.参数类型和返 ...

  3. HttpClient调用RestFul接口(post和get方式)

    /** * @version V1.0 * @Description 调用http接口工具类 * @Author pc * @Date 2018/3/2 11:03 */public class Ht ...

  4. JAVA 调用HTTP接口POST或GET实现方式

    HTTP是一个客户端和服务器端请求和应答的标准(TCP),客户端是终端用户,服务器端是网站.通过使用Web浏览器.网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请 ...

  5. php 调用 java 接口

    php 需要开启 curl模块 /** HTTP 请求函数封装*/function http_request_cloudzone($url, $data){ //var_dump($url." ...

  6. HttpClient Get/Post方式调用Http接口

    本节摘要:本节主要分别介绍如何用get方式.post方式向http接口发送数据. preparation 1. 项目环境如下: myeclipse6.5 .tomcat5.0.system:xp.JD ...

  7. 对接第三方平台JAVA接口问题推送和解决

    前言 本节所讲为实际项目中与第三方对接出现的问题最后还是靠老大解决了问题以此作为备忘录,本篇分为三小节,一小节解析Java加密接口数据,二小节解析XML文件需注意问题,最后一节则是请求Java Soa ...

  8. SpringCloud微服务之跨服务调用后端接口

    SpringCloud微服务系列博客: SpringCloud微服务之快速搭建EurekaServer:https://blog.csdn.net/egg1996911/article/details ...

  9. C#调用Java WebService int、DateTime等类型值接收到为空

    今天在调用Java接口时,有个int类型的值很明确的传了1,但接口一直返回没有接收到这个值. 解决方法: 引用接口时,VS会自动生成一个类,类中对于非string类型的字段会生成一个xxSpecifi ...

随机推荐

  1. PHP类与继承

    <?php class Person { private $name; private $age; function __construct($name,$age){ $this->nam ...

  2. 《Linux内核设计与实现》读书笔记(十九)- 可移植性

    linux内核的移植性非常好, 目前的内核也支持非常多的体系结构(有20多个). 但是刚开始时, linux也只支持 intel i386 架构, 从 v1.2版开始支持 Digital Alpha, ...

  3. JQuery中动态生成元素的绑定事件(坑死宝宝了)

    今天在做项目的时候,遇到了一个前端的问题,坑了我好长时间没有解决,今天就记录于此,也分享给大家. 问题是这样的,首先看看我的界面,有一个初始印象: 下面是操作列所对应的JS代码: { "da ...

  4. 结对实验报告-android计算器设计

     一:引言  目前手机可以说是普及率非常高的电子设备了,由于其便于携带,使用方便,资费适中等等原因,现在手机已经在一定程度开始代替固定电话的通话功能,以及一些原来电脑软件上的功能了.手机上的软件也随着 ...

  5. jenkins 插件开发资料

    jenkins plugin 开发:documenthttp://hudson-ci.org/docs/index.htmlhttps://wiki.jenkins-ci.org/display/JE ...

  6. Jenkins2 - 下载与启动

    文章来自:http://www.ciandcd.com 文中的代码来自可以从github下载: https://github.com/ciandcd 本文将引导jenkins初学者安装和配置jenki ...

  7. phpcms v9二次开发笔记

    phpcms是基于MVC结构的. 安装: 下载phpcms_v9.5.9_UTF8.zip:新建目录phpcms,将压缩包里install_package目录下所有文件复制到phpcms目录.浏览器输 ...

  8. 【Android】应用程序启动过程源码分析

    在Android系统中,应用程序是由Activity组成的,因此,应用程序的启动过程实际上就是应用程序中的默认Activity的启动过程,本文将详细分析应用程序框架层的源代码,了解Android应用程 ...

  9. 接入多家ERP厂商,美团点评餐饮高速路开启

    前段时间美团点评CEO王兴所提出的中国互联网进入下半场观点引发了互联网从业人士以及网友们的热议.当时王兴提出,当前国内外所有的互联网公司包括美团点评在内都还远没有做好整个产业链的服务,美团点评也只做了 ...

  10. 测量行业(RTK)相关的小知识总结

    RTK测量系统,一般需要先架设基准站(参考站),数据链模式外挂大电台(有天线大功率模式,理想范围方圆18公里以内).基准站通过收到卫星(多星)进行计算出当前的位置. 其中涉及到频率的设置,波特率,以及 ...