.net Core 2.2实现京东宙斯API采用OAuth授权方式调用
1.实现对接京东接口,这里主要是写了采用Oauth授权的方式调用。
2.VS2017 使用了.net core 2.2 控制台程序,json库使用 jil(这个比较轻量级,加载数据较快,但也需要注意有小坑),使用了自动排序的 SortedDictionary
3.该例子通过创建实体的方式,实例化实体,入参。
4.安装jil 可以通过nuget程序包管理器控制台:install-package jil 就会自动安装啦
5.这里只要填入 appSecret,app_key,access_token 对应值,即可。
![](/assets/blank.gif)
![](/assets/blank.gif)
using System; using System.Collections.Generic; using System.Xml;namespace JdServices {internal class Program{private static void Main(string[] args){/** 以 jingdong.pop.order.search 方法为例**/SortedDictionary<string, string> param = new SortedDictionary<string, string>();JilJsonSerializer serializer = new JilJsonSerializer();PopOrderSearch popOrder = new PopOrderSearch(){optional_fields = @"vender_id,order_id,pay_type,order_total_price,freight_price,seller_discount,order_payment,delivery_type,order_state,order_state_remark,invoice_info,order_remark,order_start_time,order_end_time,consignee_info,item_info_list",order_state = "WAIT_SELLER_STOCK_OUT",page = "1",page_size = "20",start_date = "2019-09-01 00:00:00",end_date = "2019-09-01 18:00:00",};var jdApi = "https://api.jd.com/routerjson";var appSecret = "";var app_key = "";var access_token = "";//参数param.Add("app_key", app_key);param.Add("access_token", access_token);param.Add("format", "json");param.Add("v", "2.0");param.Add("timestamp", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));param.Add("method", "jingdong.pop.order.search");param.Add("360buy_param_json", serializer.ToJson<PopOrderSearch>(popOrder));//生成签名string sign = JdServices.JdHelper.GetSign(param, appSecret);param.Add("sign", sign);//生成请求URLvar resultUrl = JdHelper.BuildGetUrl(jdApi, param);Console.ReadKey();}} }
一、Main运行入口代码
![](/assets/blank.gif)
![](/assets/blank.gif)
using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Text;namespace JdServices {public static class JdHelper{/// <summary>/// 获取签名/// </summary>/// <param name="parameters">组成签名的参数</param>/// <param name="appSecret">secret</param>/// <param name="accessToken">token</param>/// <returns></returns>public static string GetSign(SortedDictionary<string, string> parameters, string appSecret, string accessToken = ""){//参数排序var str = new StringBuilder();foreach (var kv in parameters){if (!string.IsNullOrWhiteSpace(kv.Key) && !string.IsNullOrWhiteSpace(kv.Value)){str.Append(kv.Key).Append(kv.Value);}}// 使用MD5加密转大写var result = EncryptMD5(str + appSecret).ToUpper();return result;}///<summary>/// 给一个字符串进行MD5加密///</summary>///<param name="strText">待加密字符串</param>///<returns>加密后的字符串</returns>public static string EncryptMD5(string strText){MD5 md5 = new MD5CryptoServiceProvider();byte[] hashBytes = md5.ComputeHash(Encoding.UTF8.GetBytes(strText));return string.Join("", hashBytes.Select(i => i.ToString("x2")));}/// <summary>/// 生成请求连接地址./// </summary>/// <param name="url"></param>/// <param name="param"></param>/// <returns></returns>public static string BuildGetUrl(string url, SortedDictionary<string, string> param){var strMsg = new StringBuilder();foreach (var (key, value) in param){strMsg.AppendFormat(@"&{0}={1}", key, value);}//?. 是C#6.0的语法,叫Null-Conditional Operator(null条件运算符)// 我们经常需要判断对象是否为null(不判断就会报异常System.NullReferenceException之类的信息)if (url?.IndexOf("?") != -1){url += "&" + strMsg;}else{url += "?" + strMsg;}return url.ToString();}} }
二、创建JdHelper帮助类
![](/assets/blank.gif)
![](/assets/blank.gif)
using Jil; using System; using System.Collections.Generic; using System.Text;namespace JdServices {public class JilJsonSerializer{private readonly Encoding _encoding;public JilJsonSerializer(bool isCamelCase = false): this(new Options(prettyPrint: true,excludeNulls: false,jsonp: false,dateFormat: DateTimeFormat.ISO8601,includeInherited: true,serializationNameFormat: isCamelCase ? SerializationNameFormat.CamelCase : SerializationNameFormat.Verbatim,unspecifiedDateTimeKindBehavior: UnspecifiedDateTimeKindBehavior.IsUTC)){_encoding = Encoding.UTF8;}private JilJsonSerializer(Options options){if (options == null) throw new ArgumentNullException(nameof(options));JSON.SetDefaultOptions(options);}public byte[] Serialize(Type type, object obj){var jsonString = JSON.Serialize(obj);return _encoding.GetBytes(jsonString);}public byte[] Serialize<T>(T t){var s = JSON.Serialize(t);return _encoding.GetBytes(s);}public object Deserialize(Type type, byte[] serializedObject){var jsonString = _encoding.GetString(serializedObject);return JSON.Deserialize(jsonString, type);}public T Deserialize<T>(byte[] serializedObject){return JSON.Deserialize<T>(_encoding.GetString(serializedObject));}public string ToJson<T>(T t){var bytes = Serialize(t);return _encoding.GetString(bytes);}public T ToObject<T>(string json){return JSON.Deserialize<T>(json);}} }
三、创建 JilJsonSerializer 帮助类
![](/assets/blank.gif)
![](/assets/blank.gif)
using System.Collections.Generic; using System.Text;namespace JdServices {/// <summary>/// jingdong.pop.order.search接口参数实体/// </summary>public class PopOrderSearch{public string end_date { get; set; }public string optional_fields { get; set; }public string order_state { get; set; }public string page { get; set; }public string page_size { get; set; }public string start_date { get; set; }} }
四、创建接口 PopOrderSearch 对象
至此,OAuth授权方式调用实现完成,整个例子很简单,无非就是jil使用需要注意点,也可以使用Newtonsoft.Json 库,看自己个人习惯。
转载于:https://www.cnblogs.com/bmyblogs/p/11453990.html
.net Core 2.2实现京东宙斯API采用OAuth授权方式调用相关推荐
- 记录对接京东宙斯API -- 发布商品
记录对接京东宙斯API -- 发布商品 1. SDK的问题 2. 提交工单, 反应不及时的问题(纯属吐槽, 勿怪!!!). 3. 对接同步SOP类型的商品信息API 3.1. 通过类目和属性类型,获取 ...
- php对接京东宙斯平台,利用京东联盟API获取自定义推广链接
本文将简单介绍下京东联盟.京东宙斯两个平台,以及如何利用京东宙斯平台的京东联盟API来快速获取自定义推广链接. 关于京东联盟 京东联盟(去官网看看)是一个CPS模式的营销平台,我们可以使用自己的网站放 ...
- 京东开普勒php接口,PHP调用京东联盟开普勒、宙斯API模板
本篇文章介绍的内容是PHP调用京东联盟开普勒.宙斯API模板 ,现在分享给大家,有需要的朋友可以参考一下 京东开普勒的 Appkey 和 AppSecret 在这里可以看到(需要先创建应用):http ...
- 京东宙斯杯创新应用大赛 - 作品投票排名
京东宙斯杯创新应用大赛 - 作品投票排名 http://yuncode.net/appjcloudvote.html
- PHP调用京东联盟开普勒、宙斯API模板
京东开普勒的 Appkey 和 AppSecret 在这里可以看到(需要先创建应用):http://kepler.jd.com/console/app/app_list.action 授权介绍在这里: ...
- 京东宙斯php版本sdk不能用_多主机平台玩家的福音,北通宙斯T6精英版体验测评...
「链接」 熟悉枫叔的都知道,作为一个游戏圈的老油条,虽然阅游无数,但论操作还真不能以大神自居.为了便于测评游戏截图.录屏的便捷,往往主机游戏但凡推出了PC端,都会选择PC来体验.不过,这也导致很多首发 ...
- php京东宙斯平台授权源码,好京客云平台授权京东宙斯
好京客官网 www.haojingke.com * * * * * 注册好好京客之后第一件时间就是授权京东云平台 ![](https://box.kancloud.cn/aae59bcc36caf6c ...
- 京东宙斯平台使用方法(accesstoken,appkey,appsecret参数和SDK的获取)
1.注册成为开发者 链接:https://dev.jd.com/ 2.创建应用 3.获取appsrecet和appkey,SDK(获取) 新建应用之后在左边应用证书栏位可以查看到appkey,apps ...
- java获取京东token_京东宙斯平台使用方法(accesstoken,appkey,appsecret参数和SDK的获取)...
1.注册成为开发者 链接:https://dev.jd.com/ 2.创建应用 3.获取appsrecet和appkey,SDK(获取) 新建应用之后在左边应用证书栏位可以查看到appkey,apps ...
最新文章
- linux kernel内存回收机制
- 大脑天天超负荷,三分天赋,七分练,世间惊现普通脑修炼秘籍
- 《DBA修炼之道:数据库管理员的第一本书》——1.4节评估DBA的工作邀请
- android 汉字转字节,android实现汉字转拼音功能 带多音字识别
- jenkins如何实现重新发布历史构建记录里的版本
- java中static代码块与非静态代码块
- java runnable 异常_JAVA 线程中的异常捕获
- 怎么做fastreport使用离线数据源
- eclipse Maven项目发布到Tomcat下classes文件夹却没有子模块的编译类
- Node.js 应用故障排查手册 —— 综合性 GC 问题和优化
- 检测网络是否稳定的计算机命令,如何查看自己的网络是否稳定
- (10)SPI发送verilog与Systemverilog编码
- 删除同域名所有cookies_Namesilo域名解析DNS设置教程
- python如何运行一个python程序_python如何运行?第一个python小程序示范
- Chalubo僵尸网络来袭 IOT设备或将受到DDoS攻击
- mysql 字符串的hash函数_【转载】字符串Hash函数比较
- 用鼠标获取任意窗口的句柄, 并把它当作干儿子
- Socket 服务器和客户端交互
- Carson带你学Android:请收好这一份全面详细的Android学习指南
- ArduPilot之H743+BMI270x2+First Normal Takeoff
热门文章
- 机器学习 之 随机森林(Random Forest)文本算法的精确率
- 第1章 电路元件和电路定律
- 《程序员修炼之道》书评、感受及快速参考
- 基于ASP.NET Core 6.0的整洁架构
- 清华北大计算机考研报录比,2020年考研,清华北大报考人数对比,占考研总人数14%...
- 软件测试代码表,软件测试函数列表功能图程序源代码
- 走出新手村,软件测试银行项目怎么测试 + 面试题(答案)
- 天气预报API(三):免费接口测试(“旧编码”)
- Amazon google、IBM、microsoft云计算主要平台及特点
- 大叔学编程,学的还是易语言