Restful

定义就不多说了,来点干货。网上关于定义有很多。

   public int SendService(string JsonString, string PONo)
        {
            //用于判断是否发送成功
            int Status = 1;
            //获取服务器地址
            string achieveUrl = ConfigurationManager.AppSettings["achieveUrl"].ToString();
            //基于http协议的请求响应   
            HttpWebRequest request = WebRequest.Create(achieveUrl) as HttpWebRequest;  //这里也可以直接用 WebRequest
            //提交方法
            request.Method = "POST"; //基于http的请求方法    HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法   HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法
            //设置Http标头信息
            request.UserAgent = "";   //根据需求编辑 
            //设置请求超时时间
            request.Timeout = 1000 * 60 * 30;
            //设置读取/写入超时时间
            request.ReadWriteTimeout = 1000 * 60 * 30;

            //request.CookieContainer = new CookieContainer();
            request.ContentType = @"application/json";  //这里的数据格式尤其需要注意 我这里是JSON  
            request.ContentLength = Encoding.UTF8.GetByteCount(JsonString);
            if (!string.IsNullOrEmpty(JsonString))  
            {
                var encoding = new UTF8Encoding();
                var bytes = Encoding.GetEncoding("UTF-8").GetBytes(JsonString);//  
                request.ContentLength = bytes.Length;

                using (var writeStream = request.GetRequestStream())
                {
                    writeStream.Write(bytes, 0, bytes.Length);
                }
            }
            //http请求的返回状态  
            using (var response = (HttpWebResponse)request.GetResponse())  
            {
                //用于返回信息的记录
                var responseValue = string.Empty;

                //判断返回状态  OK代表成功  状态码为200
                if (response.StatusCode != HttpStatusCode.OK)  //有很多种状态 可以允许我们做很多操作
                {
                    //拼接发送失败信息
                    var message = String.Format("Request  HTTP {0}", response.StatusCode);
                    Status = 0;
                }
                else
                {
                    //获取来自 服务器或接口的响应信息
                    using (var responseStream = response.GetResponseStream())
                    {
                        if (responseStream != null)
                            using (var reader = new StreamReader(responseStream))
                            {
                                responseValue = reader.ReadToEnd();  //读取到结尾

                                ReturnResult Data = JsonConvert.DeserializeObject<ReturnResult>(responseValue);
                                #region 把该接口的信息 填到日志中
                                Insert_integrationseverlogs("抛送子单信息到中台", responseValue, Status, achieveUrl, JsonString, null, DateTime.Now, "BTR");
                                #endregion
                                //修改子订单发送时间
                                if (Data.success == "1")
                                {
                                    UpdateSendTime(PONo, DateTime.Now);
                                }
                            }
                    }
                }
            }
            //成功返回 1、 失败返回 0
            return Status;
        }

被调用的接口 我这里的接口是写在MVC中的

 [ActionDescription("订单出库单申请结果")]
        [Public]
        [HttpPost]
        public ActionResult DeliveryOrder()
        {
            
            ReceiveOrderInforVM vm = new ReceiveOrderInforVM();//这里是框架定义

            HttpContext.Response.ContentType = "application/json"; //接收的数据类型
            Stream reqsStream = HttpContext.Request.InputStream;  //接收抛送输出的数据流
            long lSize = reqsStream.Length; //长度
            byte[] byteArray = HttpContext.Request.BinaryRead((int)lSize);
            string strContent = Encoding.ASCII.GetString(byteArray); //编码
            string stringJson = vm.GetInfor(strContent);
            ContentResult result = new ContentResult();
            return Content(stringJson);
        }

 

posted @ 2017-08-23 09:36  乐途  阅读(206)  评论(0编辑  收藏  举报