京东联盟C#接口测试示例分享
时间:2019-04-12
本文章向大家介绍京东联盟C#接口测试示例分享,主要包括京东联盟C#接口测试示例分享使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
京东联盟C#接口的下载地址为: http://jos.jd.com/doc/channel.htm?id=285
下载后,默认是一个控制台程序,核心库和demo程序在一个项目中。这里我把核心库独立成了Dll项目。
接口使用流程是,初始化DefaultJdClient类,然后调用需要的接口类,传入参数,执行获取返回结果。
注意,使用前请先修改bin目录下的config.json文件,配置appkey等信息,格式如下:
{ "appkey":"11111", "appsecret":"2222", "token":"234345", "webid":"2234234", "unionid":"567567" }
1)初始化
IJdClient client = null; private void init_JDClient() { string url = "https://api.jd.com/routerjson"; this.client = new DefaultJdClient(url, dic["appkey"].ToString(), dic["appsecret"].ToString()); }
其中dic是一个Dictionary类型,保存了appkey等配置信息。
2)获取商品基本信息接口调用
private string request_goodsInfo() { ServicePromotionGoodsInfoRequest req = new ServicePromotionGoodsInfoRequest(); req.skuIds = txtGoodsID.Text;//商品ID值 ServicePromotionGoodsInfoResponse response = client.Execute(req, dic["token"], DateTime.Now.ToLocalTime()); return response.Body; }
其中dic[‘token']是读取字典中的token值,skuIds属性是商品的ID值,这里Demo中用TextBox输入。
3)获取商品返现链接的接口调用
private string request_goodsRateUrl() { ServicePromotionGetcodeRequest req = new ServicePromotionGetcodeRequest(); req.promotionType = 7; req.materialId = "http://item.jd.com/"+txtGoodsID.Text+".html";//注意,这里是商品的落地页面,即实际链接 req.unionId = long.Parse(dic["unionid"].ToString());//联盟ID req.channel = "PC";//PC电脑端,如果是手机端就是WL req.webId = dic["webid"].ToString();//网站ID //req.extendId = "jingdong"; //req.ext1 = "jingdong"; //req.adttype = "6"; //req.protocol = 0;//1为https,其他为http //req.pid = "jingdong"; ServicePromotionGetcodeResponse response = client.Execute(req, dic["token"], DateTime.Now.ToLocalTime()); return response.Body; }
其中的materialID、unionId、webId是需要修改的,materialId是商品的实际页面。
4)解析返回的数据
返回的数据是json格式的,所以需要引入C# JSON库: Newtonsoft.Json
处理商品返现地址:
string urlinfo = request_goodsRateUrl(); string url = ""; JObject obj = JObject.Parse(urlinfo); string queryjs_result = (string)obj["jingdong_service_promotion_getcode_responce"]["queryjs_result"]; obj = JObject.Parse(queryjs_result); if ((int)obj["resultCode"] == 0) { url = (string)obj["url"]; MessageBox.Show("返现地址:"+url); }
处理商品基本信息:
string goodsinfo = request_goodsInfo(); JObject obj = JObject.Parse(goodsinfo); string getpromotioninfo_result = (string)obj["jingdong_service_promotion_goodsInfo_responce"]["getpromotioninfo_result"]; obj = JObject.Parse(getpromotioninfo_result); if ((bool)obj["sucessed"]) { obj = (JObject)obj["result"][0]; dataGridView1.Rows.Add(new object[] { "商品名称", (string)obj["goodsName"] }); dataGridView1.Rows.Add(new object[] { "商品编号", (string)obj["skuId"] }); dataGridView1.Rows.Add(new object[] { "PC比率", (string)obj["commisionRatioPc"]+"%" }); dataGridView1.Rows.Add(new object[] { "WL比率", (string)obj["commisionRatioWl"]+"%" }); dataGridView1.Rows.Add(new object[] { "PC价格", "¥"+(string)obj["unitPrice"] }); dataGridView1.Rows.Add(new object[] { "WL价格", "¥"+(string)obj["wlUnitPrice"] }); WebRequest webreq = WebRequest.Create((string)obj["imgUrl"]); WebResponse webres = webreq.GetResponse(); using(Stream stream = webres.GetResponseStream()) { pictureBox1.Image = Image.FromStream(stream); pictureBox1.Tag = url; } }
这里使用DataGridView显示商品基本信息,图片使用PictureBox显示。
5)Demo预览
6)文件下载
- 排序还可以这样做
- 韩政府公布虚拟货币投机行为打击对策
- SqlServer2005数据库文件损坏的拯救过程
- 2017年,人类在自己设计的所有游戏中都败给了AI,无一幸免
- 测试组,请用VSS命令行获取最新版本
- 想起温习一下JS中的this apply call arguments
- 学习利用JSON 摆脱表单与业务对象双向转换的繁琐工作
- 代码也疯狂:diagram生成流程图
- 设置你的Gravatar头像的方法
- 阅读Ext 学习Javascript(二)Core/Ext.extend 从继承说起
- IronPython资料
- WordPress免插件仅代码实现“返回顶部、返回底部、评论”效果(样式一)
- encodeURIcomponent编码和ASP.NET之间编码转换
- WordPress免插件仅修改代码去掉评论/留言里的链接
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法