[原创]C#植入友商网在线服务并实现同步用户注册接口(三)
[原创]C#植入友商网在线服务并实现同步用户注册接口(三)
《从友商网数据库检查用户是否存在》 我们在注册页面输入新用户名系统会自动检查该名称是否已经注册,流程是这样的: 1.首先检查自己的数据库,如果已经存在直接提示用户,如果不存在执行第2步. 2.检查友商网的数据库. 第一个检测非常容易写个sql就能解决,关键是第2步如果实现查找友商网的数据库呢? 先看接口说明书: 联邦登录接口地址 接口举例: http://agent.youshang.com/federation/commonservice/servicePortal.do? partnerId=1021& cipherCode=value&iv=value 该接口同步用户的信息,并且可以绑定到同一个合作伙伴下的公司。 必须有的参数包括partnerId,所以用户必须首先注册成为合作伙伴,否则服务会无法正常运行。 http传送的数据必须包含cipherCode,iv,否则服务会无法正常运行。 xml中类型是<type>userLogin</type> 默认算法是AES,不带明文。 接口参数:
xml中类型是<type>userLogin</type> 说明只需要修改type就行 //将type设为userLogin private string getLoginXML(string userAccount) { string xml = "<?xml version=\"1.0\" encoding = \"utf-8\"?>" + " <request>" + " <type>userLogin</type>" + " <data>" + " <attr name=\"userAccount\">{0}</attr>" + " <attr name=\"time\">{1}</attr>" + " </data>" + " </request>"; string utc = DateTimeToUTC(DateTime.Now).ToString(); // utc = utc.Substring(0, utc.IndexOf(".")); string ret = string.Format(xml, userAccount, utc); return ret; } 接口说明书指定系统时间为UTC,需要写个函数转换 //WINDOWS时间转UTC时间 private long DateTimeToUTC(DateTime vDate) { TimeZone tz = TimeZone.CurrentTimeZone; vDate = vDate.ToUniversalTime(); DateTime dtZone = new DateTime(1970, 1, 1, 0, 0, 0, 0); TimeSpan ts = vDate.Subtract(dtZone); return (long)ts.TotalMilliseconds; } 检查用户是否存在的代码 /// <summary> ///友商网检查用户登录接口 /// </summary> /// <param name="userAccount"></param> /// <returns></returns> public bool Exists(string userAccount) { try { string url = "http://agent.youshang.com/federation/commonservice/servicePortal.do"; //友商网接口 string urlParam = "partnerId={0}&cipherCode={1}&iv={2}"; //接口的URL参数 string iv = AES_Crypto.GetIv(16); //生成iv代码 string xmlLogin = this.getLoginXML(userAccount); //TUser对象转换为xml文件 //AES加密用户XML数据 string cipherCode = AES_Crypto.AESEncrypt(xmlLogin, _aesKey, iv); cipherCode = HttpUtility.UrlEncode(cipherCode);//HTML ENCODE iv = HttpUtility.UrlEncode(iv);//HTML ENCODE urlParam = string.Format(urlParam, _partnerID, cipherCode, iv); string response = this.HttpPost(url, urlParam); //提交数据.... return response.Trim().Length > 0; } catch //如友商网不存在该用户,会抛出服务器内部错误 { //在这里接收到异常视该用户不存在 return false; } } 扫一扫加作者微信
参考文档:
[原创]C#植入友商网在线服务并实现同步用户注册接口(一) C#植入友商网在线服务并实现同步用户注册接口实现 平台建立WCF服务操作指引、三层源码+桥接接口实现 C# 从注册表获取Windows服务的文件路径 C#源码-Windows服务管理器,实现安装,卸载,启动和停止服务等功能 C# Winform 软件用户授权注册系统正式发布 WebApi接口使用HttpGet方式实现接受实体类参数(原创) C# 阿里云ECS服务器SMTP发送邮件使用80端口 - 原创! C# WebAPI控制器邮箱验证接口返回自动重定向HTML页面(原创) C#.NET IP端口绑定SSL证书支持HTTPS协议(用于Win服务自承载WebApi服务器) - C/S框架网原创 【原创】C# 深度拷贝对象 使用.NET反射+递归原理实现深度克隆 【原创】C# Dev用户自定义组件,自动下拉弹框表格过滤数据组件ucMyLookUpEdit 基于Web前端用户调用CSFramework.WebApi服务端登录登出接口实现 C#实现接口的两种方式:显示实现和隐式实现接口 C#接口中多态的实现
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |