美文网首页
1.跨域调接口(接口回调)2018-10-22

1.跨域调接口(接口回调)2018-10-22

作者: 查小蛋 | 来源:发表于2018-10-22 18:12 被阅读0次

1.调用get接口:

    Get接口:   

    [HttpGet]

        public async Task<IActionResult> Get(N_ProdStoreCheckGetVm model)

        {

            var prodStore = await db.B2BProdStores.Where(t => t.ProdId == model.ProdId && t.WareId == model.WareId).FirstOrDefaultAsync();

            return Ok(new { ToSellCount = prodStore.ToSellCount });

        }

  调用:

      HttpClient hc = new HttpClient();

      string strResult = hc.GetStringAsync(ConfigMgr.Instance.B2BUrl + "doB2B/B2Ba_N_ProdStoreCheck?WareId=" + entity.WareId +"& ProdId = "+taskList.ProdId).Result;

      JObject jo = JObject.Parse(strResult);

          int ToSellCount = Convert.ToInt32(jo["ToSellCount"].ToString());

      if (ToSellCount <= 0) this.Error("指定的商品:" + taskList.ProdName + (taskList.ProdId) + "库存不足");

    接口get方法返回list时接口调用:

        string url1 = ConfigMgr.Instance.B2BUrl + "doB2B/B2Ba_N_Eb_ProdStore?WareIds=" + model.WareIds;

            HttpClient hc = new HttpClient();

            var hcResponse = hc.GetAsync(url1).Result;

            var resString = hcResponse.Content.ReadAsStringAsync().Result;

            if (hcResponse.StatusCode != HttpStatusCode.OK)

            {

                doServices.Instance.DoLog.Info(doWmsModule.ModuleIdDefine, "请求B2BUrl:" + url1 + ",仓库编码:" + model.WareIds + ",错误信息:" + resString);

                this.Error("获取仓库商品信息失败");

            }

            List<N_B2B_ProdStoreGetResVm> listProdStore = JsonConvert.DeserializeObject<List<N_B2B_ProdStoreGetResVm>>(resString);

            foreach (var item in listProdStore)

            {

                }

  *******ConfigMgr.Instance.B2BUrl:域名

GetStringAsync 与 GetAsync两种方法的区别:

          1.GetStringAsync.result后无需解析直接用JObject jo = JObject.Parse(strResult);

          2.GetAsync需要解析,用:var resString = hcResponse.Content.ReadAsStringAsync().Result;

*********

  2.调用post接口:

      post接口:

      [HttpPost]

        public async Task<IActionResult> Post(N_GiftPlanPostVm model)

        {

            B2CGiftPlan giftPlan = new B2CGiftPlan();

            giftPlan.Id = model.Id;

            giftPlan.PlanTitle = model.PlanTitle;

            giftPlan.PlanIcon = model.PlanIcon;

            giftPlan.CashCoupon = model.CashCoupon;

            giftPlan.Money = model.Money;

            giftPlan.Status = model.Status;

            giftPlan.SaleOrderId = model.SaleOrderId;

            giftPlan.OrderCreateTime = model.OrderCreateTime;

            giftPlan.CreateTime = model.CreateTime;

            giftPlan.Comment = model.Comment;

            giftPlan.CreateTime = DateTime.Now;

            giftPlan.Comment = model.Comment;

            db.B2CGiftPlans.Add(giftPlan);

            await db.SaveChangesAsync();

            return Ok();

        }

    调用post接口:

      GiftPlanVm giftPlan = new GiftPlanVm();

            giftPlan.Id = "GSP" + WmsMgr.Instance.Sequence("GiftPlan");

            giftPlan.PlanTitle = model.PlanTitle;

            giftPlan.PlanIcon = model.PlanIcon;

            //对接支付系统

            giftPlan.CashCoupon = "";

            giftPlan.Money = 0;

            giftPlan.Status = GiftPlanStatus.空卡;

            giftPlan.SaleOrderId = StoreSendTaskList.RelatedCode;

            var Url = ConfigMgr.Instance.B2CUrl+ "doB2C/B2Ca_N_GiftPlan";

            HttpClient client = new HttpClient();

            var result =client.PostAsJsonAsync(Url, giftPlan).Result;

            if(result.StatusCode!= HttpStatusCode.OK)

            {

                doServices.Instance.DoLog.Info(doWmsModule.ModuleIdDefine, "推送礼品计划失败" + result);

              this.Error("礼品计划推送失败");

            }

    调接口序列化:

    string url = ConfigMgr.Instance.EbWebUrl + "doNewB7_Web/B7_N_Eb_VenderAddress";

var hcRechargeTaskresponse = HttpClientHelper.PostAsJsonAsync(url, data).Result;

string resultContent = await hcRechargeTaskresponse.Content.ReadAsStringAsync();

            if (hcRechargeTaskresponse.StatusCode != HttpStatusCode.OK)

            {

                this.Error("同步分销商地址失败");

            }

            else

            {

                B_VenderAddressListVm sResult = JsonConvert.DeserializeObject<B_VenderAddressListVm>(resultContent);

                foreach (var item in sResult.dataList)

                {

                    WmsVenderAddress entity = new WmsVenderAddress();

                    entity.Id = doServices.Instance.DoCore.getGUID();

                    entity.VenderId = agentid;

                    entity.VenderName = item.companyName;

                    entity.Country = "中国";

                    entity.Province = item.shipState;

                    entity.City = item.shipCity;

                    entity.District = item.shipQX;

                    entity.Address = item.shipAddr;

                    entity.IsDefault = YesOrNo.否;

                    entity.PostCode = item.shipZip;

                    entity.PersonName = item.shipName;

                    entity.Phone = item.shipPhone;

                    entity.Sequence = "";

entity.Remark = item.signStandard;

db.WmsVenderAddresss.Add(entity);

}

                await db.SaveChangesAsync();

  3.string强制转换int: int ToSellCount = Convert.ToInt32(jo["ToSellCount"].ToString());

  4. 身份验证的回调接口:

    Dictionary<string, object> _signData = new Dictionary<string, object>();

            _signData["AppId"] = ConfigMgr.Instance.AppId;

            _signData["BusinessId"] = businessId;

            _signData["Message"] = message;

            _signData["State"] = state;

            string Timestamp = TextHelper.GetSecondTimeStamp();

            _signData["Timestamp"] = Timestamp;

            string sign = SignData.Md5SignDict(ConfigMgr.Instance.AppKey, _signData);

            var dataB2B = new

            {

                BusinessId = businessId,

                Message = message,

                State = state,

                Timestamp = Timestamp,

                Sign = sign,

                Sku_ProductNoList = prodStatusItems

            };

            string B2BUrl = ConfigMgr.Instance.B2BUrl + "doB2B/B2Ba_N_StoreTransTaskCallBackRK"; //B2B

            var hcRechargeTaskresponse = HttpClientHelper.PostAsJsonAsync(B2BUrl, dataB2B).Result;

            if (hcRechargeTaskresponse.StatusCode != HttpStatusCode.OK)

            {

                throw new UserException("回掉B2B失败" + hcRechargeTaskresponse.Content.ReadAsStringAsync().Result);

            }

签名校验:

          Dictionary<string, object> signData = new Dictionary<string, object>();

            signData["time_stamp"] = model.time_stamp;

            signData["user_id"] = model.user_id;

            signData["card_code"] = model.card_code;

            signData["card_password"] = model.card_password;

            string sign = SignData.Md5SignDict(B2BConfigMgr.Instance.B2C_AppKey, signData);

            if (sign != model.sign) this.Error("签名错误");

    注解:1._signData["AppId"] = ConfigMgr.Instance.AppId;    appid调用ConfigMgr,ConfigMgr调用json文件

          2.签名:sign  string sign = SignData.Md5SignDict(ConfigMgr.Instance.AppKey, _signData);

          3.时间戳:Timestamp    string Timestamp = TextHelper.GetSecondTimeStamp();

          4.比较器: Dictionary<string, object> _signData = new Dictionary<string, object>();

相关文章

  • 1.跨域调接口(接口回调)2018-10-22

    1.调用get接口: Get接口: [HttpGet] public async Task ...

  • Kotlin使用接口回调

    1.Java中的接口回调实现(支持多方法回调) 声明回调接口,初始化接口 使用接口回调(无参数) 使用接口回调(带...

  • js对通过url传值转码问题

    今天遇到一个问题,跨域调其他系统接口,需要传一个回调地址过去,由于是单页面应用,回调地址中存在特殊字符‘#’...

  • js解决跨域问题

    与后台开发联调接口时经常碰到跨域的问题,有两个解决的办法:让后端开发去掉跨域参数;前端自己解决。 前端解决接口联调...

  • Java回调深入理解

    1 接口回调 1.1 接口回调概念 什么是接口回调接口回调是指:可以把使用某一接口的类创建的对象的引用赋给该接口声...

  • Kotlin简单回调接口(lambda实现)

    注:适用于回调接口单个方法 1.方法无参无返回值回调 (1)声明回调接口,以及初始化接口 (2)接口方法的调用 (...

  • kotlinInterface

    注:适用于回调接口单个方法 1.方法无参无返回值回调 (1)声明回调接口,以及初始化接口 2.方法有参无返回值回调...

  • webpack配置proxyTable时pathRewrite无

    webpack配置接口地址代理 在项目开发中,接口联调的时候一般都是同域名下,且不存在跨域的情况下进行接口联调,但...

  • Android Module之间数据传递

    方法一:使用接口回调 (1)在子module创建回调接口(参数可变) (2)在子module 实现类设置接口回调 ...

  • 移动架构--13.简单仿网络访问框架

    1.提供网络请求的包装类 2.网络访问结果回调接口 3.网络访问具体实现接口 4.供应用层回调的网络访问回调接口 ...

网友评论

      本文标题:1.跨域调接口(接口回调)2018-10-22

      本文链接:https://www.haomeiwen.com/subject/cwogzftx.html