<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      橘子醬m
      開發小白隨記

      調用接口一般采用兩種方式,webservice和webapi,此篇寫webapi建立及測試

      1.創建:

             

       

       2.添加控制器到Controller文件夾,新建Api文件夾,將該控制器文件放入Api下,打開App_Start文件夾下webapiconfig,修改路由,

       public static void Register(HttpConfiguration config)
              {
                  config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
                  config.Routes.MapHttpRoute(
                      name: "DefaultApi",
                      routeTemplate: "api/{controller}/{id}",
                      defaults: new { id = RouteParameter.Optional }
                  );

      3.方法名定義注意點

      a.如果方法名為post或者get,就是默認使用,在測試時,直接寫到控制器LQInfo,然后傳遞方式設置為post即可,不需要寫方法;

       

       

      b.如果自定義方法,選擇方式為get或者post,那么需要寫到具體方法getcode();

       

      在用 winform調用測試時,也需要寫到方法:

       private void button1_Click(object sender, EventArgs e)
              {
      
                  string ashxSite = "http://localhost:80//ActionApi";
                  var client = new RestClient(ashxSite);
                  var request = new RestRequest("/UserInfo/GetCode", Method.GET);
                  request.AddParameter("Barcode", "WLS000021");
                  var response = client.Execute(request); // 從 WebAPI 獲取 
                  textBox2.Text = response.Content;
      
              }

      4.參數注意點

      a.如果參數只為一個:

            [HttpPost]
              public string GetCode(string Barcode) {
      
                  try
                  {
                      using (OracleConnection conn = new OracleConnection(connERP))
                      {
                      
                          string sql = @"select  trim(a.t$mitm ) 編碼,trim(b.t$dsca) 名稱 from tablea  a  join tableb b
                         on trim(a.t$pdno)=:a and a.t$mitm = b.t$item";
      
                          Object obj = conn.QueryFirstOrDefault(sql, new { a = Barcode });
      
                          if (obj != null)
                          {
      
                              string item = obj.ToString();
      
                              return item;
                          } 
      
                          else return null;
                      }
      
      
      
                  }
                  catch (Exception ex) { return "Error." + ex.Message; }
                 
              }

      b.從URL獲取參數值的方式的弊端是URL有長度限制,當超過瀏覽器的最大URL長度時請求將被瀏覽器拒絕,根本不會發出去。

      因此,當參數值過大時需要用[FromBody]參數進行傳輸,相當于一個類,將參數包含起來,使用postman測試時,參數列舉見圖3-a.

       

          public class AX
              {
                  public string url { get; set; }
              }
      
              public  string Post([FromBody] AX arg )
           
              {
      
                  
                  //  傳入的字符串:"action=search&arg1=" + user + "&arg2=" + ED_tiaoMa.getText().toString();
                  //  先用&分割,再用=分割
                  string ip = HttpContext.Current.Request.UserHostAddress;
                  if (arg!= null && !string.IsNullOrEmpty(arg.url)) {
      
                      log.DebugFormat("Post:{0}", arg.url);
                      var tmps = arg.url.Split('&');
                      string action = string.Empty;
                      string arg1 = string.Empty;
                      string arg2 = string.Empty;
                      string arg3 = string.Empty;
                      string arg4 = string.Empty;
      
                      foreach (var item in tmps) {
      
                          var tmps2 = item.Split('=');
                          var s = tmps2[0].Trim().ToLower();   //第一個參數    方法
                          var _value = tmps2[tmps2.Length - 1].Trim();  //最后一個參數    
                          if (tmps2.Length < 2) 
                              _value = string.Empty;
                          if ("action".Equals(s, StringComparison.OrdinalIgnoreCase))
                              action = _value;
                          else if ("arg1".Equals(s, StringComparison.OrdinalIgnoreCase))
                              arg1 = _value;
                          else if ("arg2".Equals(s, StringComparison.OrdinalIgnoreCase))
                              arg2 = _value;
                          else if ("arg3".Equals(s, StringComparison.OrdinalIgnoreCase))
                              arg3 = _value;
                          else if ("arg4".Equals(s, StringComparison.OrdinalIgnoreCase))
                              arg4 = _value;
                          
                      }
      
                      log.DebugFormat("Post: {0} / {1} / {2} / {3} / {4} / {5}", action, arg1, arg2, arg3, arg4,  ip);
                      if (string.IsNullOrWhiteSpace(action))
                          return "不支持此方法!";
      
                      var a1 = action.Trim().ToLower();
                      switch (a1)
                      {
                          case "getcode":
                              {
                                  try
                                  {
                                      using (OracleConnection conn = new OracleConnection(connErp))
                                      {
      
                                          string sql = @"select  trim(a.t$mitm ) 編碼,trim(b.t$dsca) 名稱 from  tablea  a  join tableb b
                         on trim(a.t$pdno)=:a and a.t$mitm = b.t$item";
      
                                          Object obj = conn.QueryFirstOrDefault(sql, new { a = arg1 });
      
                                          if (obj != null)
                                          {
      
                                              string item = obj.ToString();
      
                                              return item;
                                          }
      
                                          else return null;
                                      }
      
                                  }
                                  catch (Exception ex) { return "Error." + ex.Message; }                         
                              }
      
                              return action;
      
                      
                      }
      
                  }
      
      
                  return "Error." + arg.url;
             
      
              }

      VS附加到進程調試(不用發布,可被調用)

      點擊調試-屬性

       

       

       選擇調試—附加到進程,顯示所有用戶進程,找到w3wp進程,附加

       

      進行生成,在postman調試

      如果出現不進斷點情況,右下角帶感嘆號,但是訪問數據成功。檢查重裝電腦.net版本,對應應用程序。再試即可

      【注】調用webapi時,便于他人解析,一般用JsonResult作為返回類型,

      new JsonResult(){Data=""};

      new JsonResult(){Data=lista};

       

      posted on 2020-05-11 11:51  橘子醬m  閱讀(2419)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 天堂…中文在线最新版在线| 亚洲av男人电影天堂热app | 国产99视频精品免费视频36| 色狠狠色婷婷丁香五月| 亚洲国产制服丝袜先锋| 免费无遮挡毛片中文字幕| 国产精品九九九一区二区| 亚洲欧洲日产国无高清码图片| 男女一边摸一边做爽爽| 在线成人国产天堂精品av| 国色天香成人一区二区| 777奇米四色成人影视色区| 成人福利国产午夜AV免费不卡在线 | 激情综合网激情国产av| 视频二区中文字幕在线| 少妇宾馆粉嫩10p| AV教师一区高清| 日韩中文字幕一二三视频| 午夜欧美精品久久久久久久| 国产成人不卡一区二区| 米奇亚洲国产精品思久久| 久久青青草原亚洲AV无码麻豆| 激情综合网激情五月俺也去| 国产精品成人av电影不卡| 国产福利永久在线视频无毒不卡| 亚洲中文久久久精品无码| 国产情侣一区二区三区| 国产一区精品在线免费看| 无码人妻丰满熟妇片毛片| 日韩一区二区三区女优丝袜| 久久精品国产中文字幕| 99精品久久毛片a片| 国产精品一区二区三区污| 亚洲在线一区二区三区四区| 麻豆国产尤物av尤物在线观看| 精品国产高清中文字幕| 国产v综合v亚洲欧美大天堂| 亚洲国产高清av网站| 亚洲人妻精品一区二区| 国产麻豆一精品一av一免费| 18成人片黄网站www|