京东sdk商家上架接口调用问题总结(更新中...)
2014-09-26 13:56
330 查看
前言:
最近在做商家发布产品,调用京东sdk,发现问题很多,而且还是在我同事的帮助下完成的,摸索中,菜鸟还请高手门多多提携才好,入正题
首先是引用jd的sdk啦,京东sdk中发布商品需要调用一个
其中有req.Attributes,req.InputPids这两个的值需要调用attribute这个接口从中获得属性
因为我要用到response1里面的skuid,而这个值只能通过response1的Attribute属性获得一个Attribute集合
而运行的时候会发现,即使参数都谢对了,也不会获得数据
原因就是:jdsdk面的Attribute属性和.net框架里面的Attribute重名了,
Attribute在.net里面是abstract,抽象类没有不能被创建对象
最后总结的解决办法是:用Http请求
第一步:首先要组织http请求的url地址
jd有个api测试工具
主要的搞定,下面我个方法,仅供参考
这是创建请求url的
第二部 :用组织的url去请求,获取数据
其中有一步骤比较重要,
最近在做商家发布产品,调用京东sdk,发现问题很多,而且还是在我同事的帮助下完成的,摸索中,菜鸟还请高手门多多提携才好,入正题
首先是引用jd的sdk啦,京东sdk中发布商品需要调用一个
360buy.ware.get.attribute的接口和一个新增商品的接口
文档中提示接口调用如下(.net的)360buy.ware.get.attribute调用示例(.net)
IJdClient client = new DefaultJdClient(url, appkey, appsecret); CategoryAttributeSearchRequest req = new CategoryAttributeSearchRequest(); req.cid = "jingdong" ; req.iskeyprop = "jingdong" ; req.issaleprop = "jingdong" ; req.aid = "jingdong" ; req.fields = "jingdong" ; CategoryAttributeSearchResponse response = client.Execute (req, token, DateTime.Now.ToLocalTime());
360buy.ware.add调用示例(.net)
IJdClient client = new DefaultJdClient(url, appkey, appsecret); WareAddRequest req = new WareAddRequest(); req.tradeno = "jingdong" ; req.warelocation = "jingdong" ; req.cid = "jingdong" ; req.shopcategory = "jingdong" ; req.title = "jingdong" ; req.upccode = "jingdong" ; req.optiontype = "jingdong" ; req.itemnum = "jingdong" ; req.stocknum = "jingdong" ; req.producter = "jingdong" ; req.wrap = "jingdong" ; req.length = "jingdong" ; req.wide = "jingdong" ; req.high = "jingdong" ; req.weight = "jingdong" ; req.costprice = "jingdong" ; req.marketprice = "jingdong" ; req.jdprice = "jingdong" ; req.notes = "jingdong" ; req.wareimage = "txt" ; req.packlisting = "jingdong" ; req.service = "jingdong" ; req.skuproperties = "jingdong" ; req.attributes = "jingdong" ; req.skuprices = "jingdong" ; req.skustocks = "jingdong" ; req.propertyalias = "jingdong" ; req.outerid = "jingdong" ; req.ispayfirst = "jingdong" ; req.iscanvat = "jingdong" ; req.isimported = "jingdong" ; req.ishealthproduct = "jingdong" ; req.isshelflife = "jingdong" ; req.shelflifedays = "jingdong" ; req.isserialno = "jingdong" ; req.isappliancescard = "jingdong" ; req.isspecialwet = "jingdong" ; req.warebigsmallmodel = "jingdong" ; req.warepacktype = "jingdong" ; req.inputpids = "jingdong" ; req.inputstrs = "jingdong" ; req.hascheckcode = "jingdong" ; req.adcontent = "jingdong" ; req.listtime = "jingdong" ; WareAddResponse response1 = client.Execute (req, token, DateTime.Now.ToLocalTime());
其中有req.Attributes,req.InputPids这两个的值需要调用attribute这个接口从中获得属性
url, appkey, appsecret这三个是密钥,就不说了,必填字段是req.cid,和req.fields
token, DateTime.Now.ToLocalTime()这三个可以不填
因为我要用到response1里面的skuid,而这个值只能通过response1的Attribute属性获得一个Attribute集合
List<Attribute>list=new <Attribute>();
而运行的时候会发现,即使参数都谢对了,也不会获得数据
原因就是:jdsdk面的Attribute属性和.net框架里面的Attribute重名了,
Attribute在.net里面是abstract,抽象类没有不能被创建对象
最后总结的解决办法是:用Http请求
第一步:首先要组织http请求的url地址
jd有个api测试工具
当你填完参数,点击"提交测试"的时候会在提交参数一栏显示请求的url复制出来:
主要的搞定,下面我个方法,仅供参考
这是创建请求url的
public static string CreatUrl(string cid) { string url; return url = "https://api.jd.com/routerjson?v=2.0&method=360buy.ware.get.attribute&app_key=" + appKey + "&access_token=" + accessToken + "&360buy_param_json={\"cid\":\"" + cid + "\",\"is_key_prop\":\"\",\"is_sale_prop\":\"\",\"aid\":\"\",\"fields\":\"cid,aid,name\"}×tamp=" + DateTime.Now.ToString(); }
第二部 :用组织的url去请求,获取数据
public static Dictionary<string, string> GetAttribute(string cid) { string url = CreatUrl(cid); Encoding dataEncode = Encoding.UTF8; HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(url)); webReq.Method = "GET"; webReq.ContentType = "application/x-www-form-urlencoded"; HttpWebResponse response = (HttpWebResponse)webReq.GetResponse(); StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8); string json = sr.ReadToEnd(); int count = JObject.Parse(json)["category_attribute_search_response"]["attributes"].Count(); Dictionary<string, string> dic = new Dictionary<string, string>(); var list = JObject.Parse(json)["category_attribute_search_response"]["attributes"]; for (int i = 0; i < count; i++) { if (list[i]["name"].ToString() == "ISBN") { dic.Add("ISBN", list[i]["aid"].ToString()); } if (list[i]["name"].ToString() == "版次") { dic.Add("版次", list[i]["aid"].ToString()); } if (list[i]["name"].ToString() == "出版社") { dic.Add("出版社", list[i]["aid"].ToString()); } } return dic; }
其中有一步骤比较重要,
string json = sr.ReadToEnd();得出来的是json字符串,需要解析 大体结构是这样的
{ "category_attribute_search_response": {"code":"0","total":34,"attributes": [ {"aid":10074378,"name":"主题词"}, {"aid":10074379,"name":"读者对象"}, {"aid":10074376,"name":"附件"}, {"aid":10074377,"name":"中图法分类号"}, {"aid":10074380,"name":"附件数量"}, {"aid":10074370,"name":"朗读"}, {"aid":10074371,"name":"编纂"}, {"aid":10074368,"name":"注释"}, {"aid":10074369,"name":"口述"}, {"aid":10074374,"name":"整理"}, {"aid":10074375,"name":"品牌"}, {"aid":10074372,"name":"摄影"}, {"aid":10074373,"name":"书写"}, {"aid":10074351,"name":"出版社"}, {"aid":10074350,"name":"包装 "}, {"aid":10074349,"name":"版次"}, {"aid":10074348,"name":"ISBN"}, {"aid":10074358,"name":"印次"}, {"aid":10074359,"name":"印刷时间"}, {"aid":10074356,"name":"页数"}, {"aid":10074357,"name":"字数"}, {"aid":10074354,"name":"开本"}, {"aid":10074355,"name":"套装数量"}, {"aid":10074352,"name":"出版时间"}, {"aid":10074353,"name":"正文语言"}, {"aid":10074366,"name":"绘者"}, {"aid":10074367,"name":"校对"}, {"aid":10074364,"name":"编者"}, {"aid":10074365,"name":"译者"}, {"aid":10074362,"name":"外文名"}, {"aid":10074363,"name":"著者"}, {"aid":10074360,"name":"用纸"}, {"aid":10074361,"name":"丛书名"}, {"aid":10091564,"name":"品相"} ] } }
相关文章推荐
- iOS app支付宝接口调用的一点总结(补充支付宝SDK&Demo下载地址)
- iOS app支付宝接口调用的一点总结(补充支付宝SDK&Demo下载地址)
- iOS app支付宝接口调用的一点总结(补充支付宝SDK&Demo下载地址)
- 对接支付宝接口时,不使用SDK,调用成功但是返回的数据一直验签失败问题解决方案
- PHP调用WEBSERVICE接口常见问题答疑以及总结
- iOS app支付宝接口调用的一点总结(补充支付宝SDK&Demo下载地址)
- C# 调用C++ SDK/API的问题总结
- iOS app支付宝接口调用的一点总结(补充支付宝SDK&Demo下载地址)
- iOS app支付宝接口调用的一点总结(补充支付宝SDK&Demo下载地址)
- iOS app支付宝接口调用的一点总结(补充支付宝SDK&Demo下载地址)
- PHP调用WEBSERVICE接口常见问题答疑以及总结
- 外部系统调用EAS 凭证webserivce标准接口问题总结以及流程
- 关于微信 调用js-sdk接口报错的问题
- iOS app支付宝接口调用的一点总结(补充支付宝SDK&Demo下载地址)
- iOS app支付宝接口调用的一点总结(补充支付宝SDK&Demo下载地址)
- iOS app支付宝接口调用的一点总结(补充支付宝SDK&Demo下载地址)
- 转:iOS app支付宝接口调用的一点总结(补充支付宝SDK&Demo下载地址)
- 问题:京东API接口调用,及搜索接口keyword传值问题
- iOS app支付宝接口调用的一点总结(补充支付宝SDK&Demo下载地址)
- 调用Cognos sdk接口生成报表