1.HTTP請求格式:
<request line>
<headers>
<blank line>
[<request-body>]
在HTTP請求中,第一行必須是一個請求行(request line),用來說明請求類型、要訪問的資源以及使用的HTTP版本。緊接着是一個首部(header)小節,用來說明服務器要使用的附加信息。在首部之后是一個空行,再此之后可以添加任意的其他數據[稱之為主體(body)]。
(1)get是從服務器上獲取數據,post是向服務器傳送數據。
(1) 在客戶端,Get方式在通過URL提交數據,數據在URL中可以看到;POST方式,數據放置在HTML HEADER內提交。
(2) 對於get方式,服務器端用Request.QueryString獲取變量的值,對於post方式,服務器端用Request.Form獲取提交的數據。
(2) GET方式提交的數據最多只能有1024字節,而POST則沒有此限制。
(3) 安全性問題。正如在(1)中提到,使用Get的時候,參數會顯示在地址欄上,而Post不會。所以,如果這些數據是中文數據而且是非敏感數據,那么使用get;如果用戶輸入的數據不是中文字符而且包含敏感數據,那么還是使用post為好。
2.HTTPS請求
public string DealGet(string url) { //設置安全的類型 ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidate; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; //該屬性僅為使用安全超文本傳輸協議 (HTTPS) 方案的新連接選擇安全套接字層 (SSL) 協議 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url); myRequest.Method = "GET"; HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); string content = reader.ReadToEnd(); reader.Close(); return content; }
//信任https請求證書 private static bool RemoteCertificateValidate( object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error) { System.Console.WriteLine("Warning, trust any certificate"); return true; }
Get的方式
1.asp
*********************************
<FORM ACTION="2.asp" METHOD="get">
<INPUT TYPE="text" NAME="Text" >
<INPUT TYPE="submit" VALUE="get方式"></INPUT>
</FORM>
***************************************************
2.asp
************************************
<%
Dim i
i= Request.QueryString("Text")
Response.write i
%>
************************************
相當於點擊form內包的submit按鈕,瀏覽器就轉到2.asp,本來應該是http://localhost/2.asp,但是為了傳遞參數,客戶的瀏覽器端的ie欄就變成http://localhost/2.asp?Text=sd,后面加了問號還有參數Text的值sd,意思是要訪問服務器的2.asp,而且要傳遞Text的值給服務器。而服務器用Request.QueryString("Text") 獲得了瀏覽器ie地址欄傳遞過來的Text的值。
Post的方法
1.asp
*******************************************
<FORM ACTION="2.asp" METHOD="post">
<INPUT TYPE="text" NAME="Text" >
<INPUT TYPE="submit" VALUE="post方式"></INPUT>
</FORM>
********************************************
2.asp
*************************************************
<%Dim i
i= Request.form("Text")
Response.write i
%>
*************************************************
假設有個頁面 test.asp?id=111
這里我們的頁面是用GET的方法.這時用request.querystring("id")與request("id")是一樣得,應該如果不指定REQUEST得集合,首先就會從Querystring搜索.
而如果我們的頁面是用的是POST的方法發送數據給test.asp,那么用request.querystring("id")是不行的了(他只能取GET),而要用request.from("id"),而如果還用request("id")他也能取到數據,但先檢測QUERYSTRING的值,顯然速度就慢了.
轉載自:http://blog.sina.com.cn/s/blog_5e4ec4e101017dgl.html