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); }
不要在自己迷茫的时候不学习