1.实现对接京东接口,这里主要是写了采用Oauth授权的方式调用。

2.VS2017 使用了.net core 2.2 控制台程序,json库使用 jil(这个比较轻量级,加载数据较快,但也需要注意有小坑),使用了自动排序的 SortedDictionary

3.该例子通过创建实体的方式,实例化实体,入参。

4.安装jil 可以通过nuget程序包管理器控制台:install-package jil  就会自动安装啦

5.这里只要填入 appSecret,app_key,access_token 对应值,即可。

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运行入口代码

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帮助类

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 帮助类

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授权方式调用相关推荐

  1. 记录对接京东宙斯API -- 发布商品

    记录对接京东宙斯API -- 发布商品 1. SDK的问题 2. 提交工单, 反应不及时的问题(纯属吐槽, 勿怪!!!). 3. 对接同步SOP类型的商品信息API 3.1. 通过类目和属性类型,获取 ...

  2. php对接京东宙斯平台,利用京东联盟API获取自定义推广链接

    本文将简单介绍下京东联盟.京东宙斯两个平台,以及如何利用京东宙斯平台的京东联盟API来快速获取自定义推广链接. 关于京东联盟 京东联盟(去官网看看)是一个CPS模式的营销平台,我们可以使用自己的网站放 ...

  3. 京东开普勒php接口,PHP调用京东联盟开普勒、宙斯API模板

    本篇文章介绍的内容是PHP调用京东联盟开普勒.宙斯API模板 ,现在分享给大家,有需要的朋友可以参考一下 京东开普勒的 Appkey 和 AppSecret 在这里可以看到(需要先创建应用):http ...

  4. 京东宙斯杯创新应用大赛 - 作品投票排名

    京东宙斯杯创新应用大赛 - 作品投票排名   http://yuncode.net/appjcloudvote.html

  5. PHP调用京东联盟开普勒、宙斯API模板

    京东开普勒的 Appkey 和 AppSecret 在这里可以看到(需要先创建应用):http://kepler.jd.com/console/app/app_list.action 授权介绍在这里: ...

  6. 京东宙斯php版本sdk不能用_多主机平台玩家的福音,北通宙斯T6精英版体验测评...

    「链接」 熟悉枫叔的都知道,作为一个游戏圈的老油条,虽然阅游无数,但论操作还真不能以大神自居.为了便于测评游戏截图.录屏的便捷,往往主机游戏但凡推出了PC端,都会选择PC来体验.不过,这也导致很多首发 ...

  7. php京东宙斯平台授权源码,好京客云平台授权京东宙斯

    好京客官网 www.haojingke.com * * * * * 注册好好京客之后第一件时间就是授权京东云平台 ![](https://box.kancloud.cn/aae59bcc36caf6c ...

  8. 京东宙斯平台使用方法(accesstoken,appkey,appsecret参数和SDK的获取)

    1.注册成为开发者 链接:https://dev.jd.com/ 2.创建应用 3.获取appsrecet和appkey,SDK(获取) 新建应用之后在左边应用证书栏位可以查看到appkey,apps ...

  9. java获取京东token_京东宙斯平台使用方法(accesstoken,appkey,appsecret参数和SDK的获取)...

    1.注册成为开发者 链接:https://dev.jd.com/ 2.创建应用 3.获取appsrecet和appkey,SDK(获取) 新建应用之后在左边应用证书栏位可以查看到appkey,apps ...

最新文章

  1. linux kernel内存回收机制
  2. 大脑天天超负荷,三分天赋,七分练,世间惊现普通脑修炼秘籍
  3. 《DBA修炼之道:数据库管理员的第一本书》——1.4节评估DBA的工作邀请
  4. android 汉字转字节,android实现汉字转拼音功能 带多音字识别
  5. jenkins如何实现重新发布历史构建记录里的版本
  6. java中static代码块与非静态代码块
  7. java runnable 异常_JAVA 线程中的异常捕获
  8. 怎么做fastreport使用离线数据源
  9. eclipse Maven项目发布到Tomcat下classes文件夹却没有子模块的编译类
  10. Node.js 应用故障排查手册 —— 综合性 GC 问题和优化
  11. 检测网络是否稳定的计算机命令,如何查看自己的网络是否稳定
  12. (10)SPI发送verilog与Systemverilog编码
  13. 删除同域名所有cookies_Namesilo域名解析DNS设置教程
  14. python如何运行一个python程序_python如何运行?第一个python小程序示范
  15. Chalubo僵尸网络来袭 IOT设备或将受到DDoS攻击
  16. mysql 字符串的hash函数_【转载】字符串Hash函数比较
  17. 用鼠标获取任意窗口的句柄, 并把它当作干儿子
  18. Socket 服务器和客户端交互
  19. Carson带你学Android:请收好这一份全面详细的Android学习指南
  20. ArduPilot之H743+BMI270x2+First Normal Takeoff

热门文章

  1. 机器学习 之 随机森林(Random Forest)文本算法的精确率
  2. 第1章 电路元件和电路定律
  3. 《程序员修炼之道》书评、感受及快速参考
  4. 基于ASP.NET Core 6.0的整洁架构
  5. 清华北大计算机考研报录比,2020年考研,清华北大报考人数对比,占考研总人数14%...
  6. 软件测试代码表,软件测试函数列表功能图程序源代码
  7. 走出新手村,软件测试银行项目怎么测试 + 面试题(答案)
  8. 天气预报API(三):免费接口测试(“旧编码”)
  9. Amazon google、IBM、microsoft云计算主要平台及特点
  10. 大叔学编程,学的还是易语言