首页 新闻 会员 周边 捐助

获取第三方接口推送的数据,应该怎么实现?

0
[已解决问题] 解决于 2020-03-17 17:02

本人 新手一个。
http://open.yto.net.cn/interfaceDocument/menu250/submenu256
我在做 圆通快递 物流信息对接,订阅物流信息。圆通实时推送物流信息,回调地址处,Controller因该怎么实现?


需要考虑 推送数据的形式吗?例如是以form还是以body的形式


以下是我自己实现的代码,不知道对不对?

   [HttpPost]
    public String Yuantong_Push()
    {
        byte[] byts = new byte[Request.InputStream.Length];
        Request.InputStream.Read(byts, 0, byts.Length);
        string param = System.Text.Encoding.Default.GetString(byts);
        try
        {
            Dictionary<string, string> dic = new Dictionary<string, string>();
            string[] spl = param.Split('&');
            foreach (string s in spl)
            {
                int splIdx = s.IndexOf('=');
                string key = s.Substring(0, splIdx);
                string value = s.Substring(splIdx + 1);

                dic.Add(key.Trim(), value.Trim());
            }
            string contentJson = JsonConvert.SerializeObject(dic);

            return proxy.insertYuantongPush(contentJson.UrlDecode());
        }
        catch (Exception ex)
        {
            return "<Response><logisticProviderID>YTO</logisticProviderID><txLogisticID>" + param + "</txLogisticID><success>false</success><reason>" + ex + "</reason></Response>";
        }
    }
盤絲大仙的主页 盤絲大仙 | 菜鸟二级 | 园豆:202
提问于:2020-03-17 14:58
< >
分享
最佳答案
0
[HttpPost]
    public String Yuantong_Push([FromForm]string logistics_interface,[FromForm]string data_digest,[FromForm]string clientId,[FromForm]string type){
    if (md5(urlencode(logistics_interface)) != data_digest){
       //请求签名不对,请求被篡改了。
    }

   var orderXmlContent= logistics_interface; //文本内容,即文档中的【请求参数列表】xml结构数据。
}
奖励园豆:5
czd890 | 专家六级 |园豆:14488 | 2020-03-17 16:22

感谢解答

盤絲大仙 | 园豆:202 (菜鸟二级) | 2020-03-17 16:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册