91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#怎么通過GET/POST方式發送Http請求

發布時間:2021-09-10 17:04:31 來源:億速云 閱讀:225 作者:chen 欄目:開發技術

這篇文章主要講解了“C#怎么通過GET/POST方式發送Http請求”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C#怎么通過GET/POST方式發送Http請求”吧!

目錄
  • 兩者的區別:

    • 參數

    • 傳輸數據的大小

    • 安全性

  • Get請求

    • Post請求

      介紹http請求的兩種方式,get和post方式。并用C#語言實現,如何請求url并獲取返回的數據

      兩者的區別:

      參數

      Get請求把提交的數據進行簡單編碼,同時將url的一部分發送到服務器
      比如url:Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB
      所以get請求方式提交的數據存在一定的安全隱患,如果在使用對安全性要求教高的操作(比如用戶登錄,支付),應使用post方式。Get請求是默認的http請求方法,我們一般通過get方法來獲取表單數據

      POST請求會把請求的數據放置在HTTP請求包的包體中。上面的item=bandsaw就是實際的傳輸數據。

      傳輸數據的大小

      GET,特定的瀏覽器和服務器對URL的長度有限制。因此,在使用GET請求時,傳輸數據會受到URL長度的限制。

      POST,由于不是URL傳值,理論上是不會受限制的,但是實際上各個服務器會規定對POST提交數據大小進行限制,Apache、IIS都有各自的配置。

      安全性

      POST的安全性比GET的高。這里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全,上面提到的安全僅僅是不修改服務器的數據。比如,在進行登錄操作,通過GET請求,用戶名和密碼都會暴露再URL上,因為登錄頁面有可能被瀏覽器緩存以及其他人查看瀏覽器的歷史記錄的原因,此時的用戶名和密碼就很容易被他人拿到了。除此之外,GET請求提交的數據還可能會造成Cross-site request frogery攻擊

      HTTP中的GET,POST,SOAP協議都是在HTTP上運行的

      Get請求

      請求類

      ///
      /// Get請求
      /// 
      /// 
      /// 字符串
      public static string GetHttpResponse(string url, int Timeout)
      {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "GET";
            request.ContentType = "text/html;charset=UTF-8";
            request.UserAgent = null;
            request.Timeout = Timeout;
      
          HttpWebResponse response = (HttpWebResponse)request.GetResponse();
          Stream myResponseStream = response.GetResponseStream();
          StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
          string retString = myStreamReader.ReadToEnd();
          myStreamReader.Close();
          myResponseStream.Close();
      
          return retString;
      }

      調用方法

      string url="Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB";
      string res = HttpHelper.GetHttpResponse(url, 6000);
      if (res != null)
      {
         T mes = JsonHelper.DeserializeJsonToObject<T>(res)
      }

      Post請求

      /// 創建POST方式的HTTP請求  
              public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters, int timeout, string userAgent, CookieCollection cookies)
              {
                  HttpWebRequest request = null;
                  //如果是發送HTTPS請求  
                  if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
                  {
                      request = WebRequest.Create(url) as HttpWebRequest;
                  }
                  else
                  {
                      request = WebRequest.Create(url) as HttpWebRequest;
                  }
                  request.Method = "POST";
                  request.ContentType = "application/x-www-form-urlencoded";
      
                  //設置代理UserAgent和超時
                  //request.UserAgent = userAgent;
                  //request.Timeout = timeout; 
      
                  if (cookies != null)
                  {
                      request.CookieContainer = new CookieContainer();
                      request.CookieContainer.Add(cookies);
                  }
                  //發送POST數據  
                  if (!(parameters == null || parameters.Count == 0))
                  {
                      StringBuilder buffer = new StringBuilder();
                      int i = 0;
                      foreach (string key in parameters.Keys)
                      {
                          if (i > 0)
                          {
                              buffer.AppendFormat("&{0}={1}", key, parameters[key]);
                          }
                          else
                          {
                              buffer.AppendFormat("{0}={1}", key, parameters[key]);
                              i++;
                          }
                      }
                      byte[] data = Encoding.ASCII.GetBytes(buffer.ToString());
                      using (Stream stream = request.GetRequestStream())
                      {
                          stream.Write(data, 0, data.Length);
                      }
                  }
                  string[] values = request.Headers.GetValues("Content-Type");
                  return request.GetResponse() as HttpWebResponse;
              }
      
      
          /// <summary>
          /// 獲取請求的數據
          /// </summary>
          public static string GetResponseString(HttpWebResponse webresponse)
          {
              using (Stream s = webresponse.GetResponseStream())
              {
                  StreamReader reader = new StreamReader(s, Encoding.UTF8);
                  return reader.ReadToEnd();
      
              }
          }

      調用方法

      //參數p
      IDictionary<string, string> parameters = new Dictionary<string, string>();
      parameters.Add("p", HttpUtility.UrlEncode(p));
      //http請求
      System.Net.HttpWebResponse res = HttpHelper.CreatePostHttpResponse(url, parameters, 3000, null, null);
      if (res == null)
      {
          Response.Redirect("RequestFailed.aspx?result=出錯了,可能是由于您的網絡環境差、不穩定或安全軟件禁止訪問網絡,您可在網絡好時或關閉安全軟件在重新訪問網絡。");
      }
      else
      {
          //獲取返回數據轉為字符串
         string mes = HttpHelper.GetResponseString(res);
         T model = JsonHelper.DeserializeJsonToObject<T>(mes);
      }

      感謝各位的閱讀,以上就是“C#怎么通過GET/POST方式發送Http請求”的內容了,經過本文的學習后,相信大家對C#怎么通過GET/POST方式發送Http請求這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

      向AI問一下細節

      免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

      AI

      湟源县| 三原县| 山东省| 通山县| 都昌县| 平安县| 岢岚县| 宁波市| 三原县| 耿马| 辽阳县| 稷山县| 溧阳市| 芜湖市| 当阳市| 新干县| 永春县| 东光县| 行唐县| 陇川县| 邹平县| 如东县| 古蔺县| 淮南市| 潮安县| 桦南县| 渭南市| 汾阳市| 江永县| 施秉县| 武城县| 凤冈县| 岢岚县| 南召县| 合山市| 西青区| 康平县| 西峡县| 民县| 新沂市| 巴彦淖尔市|