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

用webclient 方式:

    /// <summary>
        ///     调用java cxf ws_security加密的服务wcf客户端对应的加密类
        /// </summary>
        public class WssSecurity
        {
            private  byte[] _nonce ;

            );

            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));
            }
            ", "a", "b", "c", "d", "e",
            "f" };
            public static String GetNoce(int length) {
                StringBuilder sb = new StringBuilder();
                Random r=new Random();
                ; 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. php 调用 java 接口

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

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

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

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

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

  7. java接口调用——webservice就是一个RPC而已

    很多新手一听到接口就蒙逼,不知道接口是什么!其实接口就是RPC,通过远程访问别的程序提供的方法,然后获得该方法执行的接口,而不需要在本地执行该方法.就是本地方法调用的升级版而已,我明天会上一篇如何通过 ...

  8. 规则引擎集成接口(七)规则引擎调用Java类

    规则引擎调用Java类 通过myEclipse编写一个简单工程,其中方法是两数相加等到结果,既结果1=输入值1+输入值2.实现规则调用外部接口的方法有三种. 1:接口实例:在myEclipse中制作一 ...

  9. Java调用webservice接口方法

                             java调用webservice接口   webservice的 发布一般都是使用WSDL(web service descriptive langu ...

随机推荐

  1. Entity Framework中使用IEnumerable&lt;T&gt;、IQueryable&lt;T&gt;及IList&lt;T&gt;的区别

    1. IEnumerable<T> IEnumerable<T> :对于在内存中集合上运行的方法,返回的可枚举对象将捕获传递到方法的参数.在枚举该对象时,将使用查询运算符的逻辑 ...

  2. Sublime text 3如何编辑less并转(编译)成css文件

    今天开始学习使用less这个强大方便的前端工具,本来是考虑用koala(专门编辑less的软件)来使用less的,但是发现sublime编辑器也可以实现对less的编译及高亮显示代码,这样既能少用一个 ...

  3. 设置apache登陆密码验证

    一.编辑虚拟目录配置文件,设置认证方式 Alias /test"/var/www/test"<Directory "/var/www/test">O ...

  4. Google公布了禁用Chrome插件后的新解决方案

    chrome://flags/#enable-npapi 启用npapi后重启chrome,再打开 chrome://plugins/

  5. nodejs在Liunx上的部署生产方式-PM2

    先安装:npm install -g pm2 (注意:使用它要先安装它,用root账号和全局模式安装一下) 安装完成使用:pm2 -v 查看版本信息 安装成功之后,启动nodejs项目:pm2 sta ...

  6. Ngrok搭建服务器

    一.ngrok简介及作用 ngrok 是一款用go语言开发的开源软件,它是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道.下图简述了ngrok的原理. ngrok 可 ...

  7. 11g添加asm

    1.创建组 2.创建grid用户 3.用grid安装Gride Infrastructure软件 4.执行root.sh[root@ora11g softdb]# /u01/app/11.2.0/gr ...

  8. Tiffany

    --名称:Tiffany&Co(蒂芙尼) --总部:美国,纽约 --历史:1837年创立 --产品:珠宝.手表. 配饰.礼品 --特点:品牌,质量,奢饰品

  9. C++中标准容器Vector,元素操作.insert()小结

    insert() 函数有以下三种用法: iterator insert( iterator loc, const TYPE &val );  //在指定位置loc前插入值为val的元素,返回指 ...

  10. struts2+jquery+ajax实现上传&amp;&amp;校验实例

    一直以为ajax不能做上传,直到最近看了一些文章.需要引入AjaxFileUploaderV2.1.zip,下载链接:http://pan.baidu.com/s/1i3L7I2T 代码和相关配置如下 ...