[原创]C#植入友商网在线服务并实现同步用户注册接口(三)
[原创]C#植入友商网在线服务并实现同步用户注册接口(三) ![[原创]C#植入友商网在线服务并实现同步用户注册接口(三) [原创]C#植入友商网在线服务并实现同步用户注册接口(三)](http://www.csframework.com/images/seo/CSFramework-Source.jpg)
《从友商网数据库检查用户是否存在》
我们在注册页面输入新用户名系统会自动检查该名称是否已经注册,流程是这样的:
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,不带明文。
接口参数:
|
序号 |
参数名 |
名称 |
备注 |
备注 |
|
1. |
userAccount |
登录名 |
登录名 |
必填 |
|
1. 2. |
time |
系统当前时间 |
此请求发起的时间,目前定为发起时间的20分钟内有效, 超时请求将被视为非法。从January 1, 1970 UTC(coordinated universal time)开始计数的毫秒数,注意正确设置系统时间。 |
必填 |
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;
}
}

TMS-物流运输管理系统《系统详细设计说明书》docx下载(原创文档)
【原创】WCF开发框架 - 采用wsHttpBinding及basicHttpBinding连接https协议的WCF服务
原创C/S架构开源软件 - C#.NET+Winform+Dev+SQL快速开发框架
CSFramework.COM原创:全球国家名称列表国旗图标库导入程序(C#+VS2015)
原创:SQLJOB作业自动备份数据库并自动清除备份历史记录
【原创产品】自己开发MES系统软件,MES开发架构及MES客户端快速开发框架平台
【原创】进销存软件开发模板基于C/S架构快速开发框架C#+Winform+DevExpress
原创:C#源码 GridMovetor按回车自动跳到下一列或自动新增记录(www.csframework.com)
原创:C/S架构快速开发框架通用可配置的数据修改日志解决方案
【原创】WebApi开发框架:Token生成、Token缓存原理、Token验证、令牌机制与原理
【原创】C# Winform Dev自动下拉弹框筛选数据PopupContainerEdit组件
【原创】C# Dev用户自定义组件,自动下拉弹框表格过滤数据组件ucMyLookUpEdit
【原创】C# 深度拷贝对象 使用.NET反射+递归原理实现深度克隆
【原创】简单快速软件开发平台,C/S架构二次开发平台
【原创】C# Winform进销存系统快速开发框架
原创Winform快速开发框架平台Oracle版本(三层架构+C#.NET+Oracle数据库)
什么是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内容管理系统 |
在线客服
