0to9

一、代码

①类名

    public class TouTiao
    {
        public class model
        {
            public string site_id { get; set; }
            public string ad_id { get; set; }
            public List<Data> data { get; set; }
        }

        public class Data
        {
            public string label { get; set; }
            public string lable { get; set; }
            public string value { get; set; }
        }
     }

  

②控制器

    public class DataController : BaseController
    {

        [HttpPost]
        public int GetTT()
        {
            using (CR_ReservationRepository db = new CR_ReservationRepository(new Models.DBContainer()))
            {
                //正规流程
                //1.UrlDecode:
                //2.unicode 转中文
                //var e = "{ \"site_id\": \"1598708326294535\", \"ad_id\": \"\", \"data\": [{\"lable\": \"\u623f\u5b50\u9762\u79ef\", \"id\": 1599334023368723, \"value\": \"321\", \"label\": \"\u623f\u5b50\u9762\u79ef\"}]}";
                var e = System.Web.HttpContext.Current.Request.Form["data"];
                var h = Newtonsoft.Json.JsonConvert.DeserializeObject<TouTiao.model>(e);

                var entity = new Models.CR_Reservation();
                try
                {
                    entity.Flag = "今日头条";
                    entity.Status = 0;
                    entity.CreateTime = Utils.ObjectToDateTime( GetValue(h.data, "时间") );
                    entity.Tel = GetValue(h.data, "手机");
                    entity.Name = GetValue(h.data, "称呼");
                    entity.Area = GetValue(h.data, "面积");
                    entity.OpenSoure = e;
                }
                catch
                {
                    entity.Flag = "错误";
                    entity.OpenSoure = e??"null";
                    entity.Status = 0;
                    entity.CreateTime = DateTime.Now;
                }
                db.Create(entity);

                return db.SaveChanges();
            }

        }

        private string GetValue(List<TouTiao.Data> m, string str)
        {
            var s = "";
            try
            { 
                s = m.FirstOrDefault(x => x.label.Contains(str)).value;
            }
            catch
            {

            }
            return s;
        }

    }

  

二、过程分析

1.看官网文档。curl自己本地代码测试成功。但是不见今日数据过来,怀疑今日头条是否转发。

2.分析是否转发。查看IIS站点日志,发现有数据转发过来,准备监控流量

3.监控访问请求。打开WiresharkPortable,监控iis访问IP。查看请求过程,服务器报500错误,原来表单是按键值对传值。Rquest.Form["data"]获取到数据,ok

分类:

技术点:

相关文章:

  • 2021-07-03
  • 2021-12-31
  • 2022-01-07
  • 2021-07-22
  • 2021-08-24
  • 2021-11-26
  • 2021-04-21
  • 2021-07-30
猜你喜欢
  • 2021-10-31
  • 2021-09-13
  • 2021-09-10
  • 2021-11-10
  • 2022-03-08
  • 2021-08-13
  • 2021-12-10
相关资源
相似解决方案