注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

扶红星的博客

生活本无味,尝试的多了也便五味俱全了。

 
 
 

日志

 
 

.Net调用线上京东API示例分析  

2013-09-23 14:45:40|  分类: 知识梳理 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
说明:随着京东平台的不断推广,这里也便招揽了越来越多的用户。作为一个开发者,为了满足京东用户的各种平台需求,我们就需要对京东宙斯上的技术文档部分http://help.jd.com/jos/ 有一个全面透彻的理解与掌握,类似这样的平台我们都知道依据的是平台接口进行开发的,所以这里我们就得从接口调用http://help.jd.com/jos/question-580.html#A5的相关知识点为切入口进行工作的分配,接下来我们就从一个简单的示例了解起。。。

        string JD_API_URL = "http://gw.api.360buy.com/routerjson";//指定线上的环境入口地址
        private const string app_key = "***6D4BC6FB3DAE822E609CA995F0***";//定义一个应用密钥
        private const string appSecret = "***f467a54af4aa0b879f264f60bf***";//定义一个应用密钥串
        private const string access_token = "***e2122-d76f-4f52-80e8-42fe3e8e3***";//定义一个有效的授权码
        private const string method = "360buy.wares.search";//这里根据需求定义一个接口方法,此处以“检索商品信息”接口为例
        //string timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
        private const string v = "2.0";
        private const string param = "{\"page\":\"1\",\"page_size\":\"10\",\"fields\":\"ware_id,title,shop_id,jd_price\"}";//此处为“检索商品信息”接口中列举的应用级别输入参数的一部分

        protected void Page_Load(object sender, EventArgs e)
        {
            //string timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            //string MD5Str = appSecret + "360buy_param_json" + param + "access_token" + access_token + "app_key" + app_key + "method" + method + "timestamp" + timestamp + "v" + v + appSecret;
            //MD5Str = FormsAuthentication.HashPasswordForStoringInConfigFile(MD5Str.ToString(), "MD5").ToUpper();//对字符串进行md5加密并对加密后的字符串进行大写转换


            string sourceSign = GetParam(app_key, appSecret, access_token, method, param);//拼接原串
            string MD5Str = getSign(sourceSign);//获取签名
            String tokenUrl = (access_token == null || access_token == "") ? "" : ("access_token=" + access_token); //拼接token
            String data = "app_key=" + app_key + "&v=2.0&" + tokenUrl + "&method=" + method + "&360buy_param_json=" + HttpUtility.UrlEncode(param) + "&sign=" + MD5Str + "&timestamp=" + HttpUtility.UrlEncode(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//请求的参数

            //发送请求,返回的数据即为响应的数据
            String responses = HttpPost(JD_API_URL, data);
            responses = responses.Replace("{", "<br/>{");
            Response.Write(responses);
        }

        //拼接原串
        public string GetParam(String appKey, String appSecretKey, String token, String method, String param)
        {
            string timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            String sourceSign = appSecretKey + "360buy_param_json" + param + "access_token" + token + "app_key" + appKey + "method" + method + "timestamp" + timestamp + "v2.0" + appSecretKey;
            return sourceSign;
        }
        //对拼接的原串进行md5加密并对加密后的字符串进行大写转换
        public String getSign(String sourceSign)
        {
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            byte[] encryptedBytes = md5.ComputeHash(Encoding.ASCII.GetBytes(sourceSign));
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < encryptedBytes.Length; i++)
            {
                sb.AppendFormat("{0:x2}", encryptedBytes[i]);
            }
            return sb.ToString().ToUpper();
        }

        //发送请求并获取返回信息
        public String HttpPost(String url, String postData)
        {
            Stream outstream = null;
            Stream instream = null;
            StreamReader sr = null;
            HttpWebResponse response = null;
            HttpWebRequest request = null;
            Encoding encoding = System.Text.Encoding.GetEncoding("UTF-8");
            byte[] data = encoding.GetBytes(postData);
            
            try
            {
                // 设置参数 
                request = WebRequest.Create(url) as HttpWebRequest;
                            
                request.AllowAutoRedirect = true;
                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = data.Length;
                outstream = request.GetRequestStream();
                outstream.Write(data, 0, data.Length);
                outstream.Close();
                //发送请求并获取相应回应数据 
                response = request.GetResponse() as HttpWebResponse;
                instream = response.GetResponseStream();
                sr = new StreamReader(instream, encoding);
                //返回结果
                string content = sr.ReadToEnd();
                return content;
            }
            catch (Exception ex)
            {
                string err = ex.Message;
                return string.Empty;
            } 
        }
由于京东平台上目前只支持JSON型数据,所以说这里返回的也就只有JSON格式的数据了,示例结果如下图所示
.Net调用线上京东API示例分析 - 盛情渊 - 南宫云遥的博客
 
  评论这张
 
阅读(424)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017