投稿 资料上传 提问 搜索
您现在的位置是: 首页 > 问答 > 正文

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

本人 新手一个。
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>";
}
}


问题回复
  1. 半途而废
    半途而废IT技术之家

    [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结构数据。
    }


    回复