Post流提交、接收

一、提交

 1  public  void PostData( string Data,  string cUrl)
 2         {
 3             HttpWebRequest myReq =  null;
 4             HttpWebResponse response =  null
 5              try
 6             {
 7                  byte[] arrB = Encoding.UTF8.GetBytes(Data);
 8                 myReq = (HttpWebRequest)WebRequest.Create(cUrl);  // 根据URL 创建对象
 9                  myReq.Method =  " POST ";
10                 myReq.ContentType =  " application/x-www-form-urlencoded ";
11                 myReq.ContentLength = arrB.Length;
12                 Stream outStream = myReq.GetRequestStream();
13                 outStream.Write(arrB,  0, arrB.Length);
14                 outStream.Close();
15 
16                 response = (HttpWebResponse)myReq.GetResponse();
17                 HttpStatusCode status = response.StatusCode;
18                  switch (status)
19                 {
20                      case HttpStatusCode.OK:  // 返回状态码 200, 表示正常接收
21                          tryTimes =  0// 发送成功,将重试次数计数器清零
22 
23                         LogOrderSyncInfo(Data); // 向数据库中记录订单推送日志
24 
25                         Log.WriteCommonLog( " info "" 推送数据成功! ");
26                          break;
27                      default// 返回其他状态码,表示接收异常,需要重试3次
28 
29                         Thread.Sleep( 3000); // 失败后,过3秒后重试
30 
31                          if (tryTimes <  3)
32                         {
33                             tryTimes++;
34                             Log.WriteCommonLog( " error "" 推送数据出错!错误信息: " + status.ToString() +  " 正在进行第: " + tryTimes.ToString() +
35                                                 " 次重试 ");
36                             PostData(Data, cUrl);
37                         }
38                          else  if (tryTimes ==  3)
39                         {
40                             tryTimes =  0// 发送失败,将重试次数计数器清零
41                               // 连续失败三次,则取消该订单推送
42                          }
43 
44                          break;
45                 }
46             }
47              catch (WebException ex)  // 表示接收异常,需要重试3次
48              {
49                 Thread.Sleep( 3000); // 失败后,过3秒后重试
50 
51                  if (tryTimes <  3)
52                 {
53                     tryTimes++;
54                     Log.WriteCommonLog( " error "" 推送数据出错!错误信息: " + ex.ToString() +  " 正在进行第: " + tryTimes.ToString() +  " 次重试 ");
55                     PostData(Data, cUrl);
56                 }
57                  else  if (tryTimes ==  3)
58                 {
59                     tryTimes =  0// 发送失败,将重试次数计数器清零
60                       // 连续失败三次,则取消该推送
61                  }
62             }
63              finally
64             {
65                  if (myReq !=  null)
66                     myReq.Abort();
67                  if (response !=  null)
68                     response.Close();              
69             }

70         } 

二、接收 

数据接收方法比较简单,我这里用的是ASP.NET MVC 

 1 [AcceptVerbs(HttpVerbs.Post)]
 2          public ActionResult Receive()
 3         {
 4              int result =  0;
 5              string msg =  string.Empty;
 6              string cXml =  string.Empty;
 7 
 8              try
 9             {
10 
11                  // 1.获取商户推送过来的订单发货数据
12                   // 1.1 获取数据
13                  StreamReader myStreamReader =  new StreamReader((Stream) this.Request.InputStream);
14                 cXml = myStreamReader.ReadToEnd();
15 
16                 result =  1; // DataOperate(cXml); // 数据处理方法,返回处理结果
17 
18             }
19              catch (Exception ex)
20             {
21                 result =  0;
22                 msg =  " 出错,错误信息: " + ex.ToString();
23                 Log.WriteCommonLog( " error ", msg);
24             }
25 
26 
27              if (result >  0)
28                 Response.StatusCode =  200;
29              else
30                 Response.StatusCode =  404;
31              return View();

32         } 

转载于:https://www.cnblogs.com/xpengfee/archive/2012/09/18/2690499.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值