1、詳解HTTP請求:get方法和post方法的區別
1 get是從伺服器上獲取數據,post是向伺服器傳送數據。 2 get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。 3 對於get方式,伺服器端用Request.QueryString獲取變數的值,對於post方式,伺服器端用Request.Form獲取提交的數據。 4 get傳送的數據量較小,不能大於2KB。post傳送的數據量較大,一般被默認為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。 5 get安全性非常低,post安全性較高。 6 HTTP 定義了與伺服器交互的不同方法,最基本的方法是 GET 和 POST。事實上 GET 適用於多數請求,而保留 POST 僅用於更新站點。根據 HTTP 規范,GET 用於信息獲取,而且應該是 安全的和冪等的。所謂安全的意味著該操作用於獲取信息而非修改信息。換句話說,GET 請求一般不應產生副作用。冪等的意味著對同一 URL 的多個請求應該返回同樣的結果。完整的定義並不像看起來那樣嚴格。從根本上講,其目標是當用戶打開一個鏈接時,她可以確信從自身的角度來看沒有改變資源。 比如,新聞站點的頭版不斷更新。雖然第二次請求會返回不同的一批新聞,該操作仍然被認為是安全的和冪等的,因為它總是返回當前的新聞。反之亦然。POST 請求就不那麼輕鬆了。POST 表示可能改變伺服器上的資源的請求。仍然以新聞站點為例,讀者對文章的註解應該通過 POST 請求實現,因為在註解提交之後站點已經不同了 7 在FORM提交的時候,如果不指定Method,則默認為GET請求,Form中提交的數據將會附加在url之後,以?分開與url分開。字母數字字元原 樣發送,但空格轉換為「+「號,其它符號轉換為%XX,其中XX為該符號以16進製表示的ASCII(或ISO Latin-1)值。GET請求請提交的數據放置在HTTP請求協議頭中,而POST提交的數據則放在實體數據中;GET方式提交的數據最多隻能有1024位元組,而POST則沒有此限制
2、利用多線程實現一個簡單的支持get方式的http伺服器 求求大哥大姐一定幫忙啊。一定快點幫忙啊
Option Explicit
Public Declare Function CreateThread Lib "kernel32" (ByVal lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadID As Long) As Long
Public Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long
Public id As Long
Public Function AddText()
Do
Form1.Text1.Text = "Adding to Text1 - "
doevents
Loop
End Function
Option Explicit
Private Sub Command1_Click()
id = CreateThread(ByVal 0&, ByVal 0&, AddressOf AddText, ByVal 0&, 0, id)
End Sub
Private Sub Command2_Click()
Call TerminateThread(id, ByVal 0&)
End Sub
//PS 請注意裡面所用到的控制項...
我可以幫助你,你先設置我最佳答案後,我百度Hii教你。你的串號我已經記下,採納後我會幫你製作
3、c++ 如何發送http get請求 獲取伺服器數據
C++寫確實稍微麻煩點
我只能推薦一些有用的庫供你參考 libcurl一般用得比較多
你可以去研究下,百度上有這個博客裡面有具體用法 我就不寫了
http://blog.csdn.net/fengshuiyue/article/details/39530093/
4、利用多線程實現一個簡單的支持get方式的http伺服器 求求大哥大姐一定幫忙啊。一定快點幫忙啊
Option Explicit
Public Declare Function CreateThread Lib "kernel32" (ByVal lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadID As Long) As Long
Public Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long
Public id As Long
Public Function AddText()
Do
Form1.Text1.Text = "Adding to Text1 - "
doevents
Loop
End Function
Option Explicit
Private Sub Command1_Click()
id = CreateThread(ByVal 0&, ByVal 0&, AddressOf AddText, ByVal 0&, 0, id)
End Sub
Private Sub Command2_Click()
Call TerminateThread(id, ByVal 0&)
End Sub
//PS 請注意裡面所用到的控制項...
我可以幫助你,你先設置我最佳答案後,我百度Hii教你。你的串號我已經記下,採納後我會幫你製作
5、java中利用HttpUrlConnenction通過Get方法請求遠端伺服器,url中包含有中文
客戶端通過URLEncoder.encode("", "GBK")發送請求,然後服務端配置成用GBK對URL解碼,應該是不用做別的事的。
(tomcat的編碼設置可以百度"tomcat connector encoding",resin可以百度"resin character-encoding")。
如果不行可以按照下面的例子發送變數utf8的內容到伺服器,然後對比一下運行結果,
比如伺服器端get到的數據是下面哪幾種解碼情況,或者一種都不是(這就有可能是伺服器程序不是utf8編碼)。
下面是我的運行結果,如果不一樣說明你客戶端編碼不是utf-8。
package test;
import java.net.URLDecoder;
import java.net.URLEncoder;
public class Test {
public static void main(String[] args) throws Exception {
String utf8 = "我是內容:hello";
//模擬客戶端編碼
String gbkURL = URLEncoder.encode(utf8, "GBK");
// 模擬伺服器為ISO8859-1解碼(默認伺服器都是這種解碼)
String isoDec = URLDecoder.decode(gbkURL, "ISO8859-1");
// 亂碼處理(得到正確內容)
String iso2gbk = new String(isoDec.getBytes("ISO8859-1"), "GBK");
// 模擬伺服器為UTF-8解碼(應該是人為配置的)
String utfDec = URLDecoder.decode(gbkURL, "UTF-8");
// 亂碼處理(得到的依舊是亂碼)
String uft2gbk = new String(utfDec.getBytes("ISO8859-1"), "GBK");
// 配置為GBK解碼的伺服器,無亂碼
String gbkDec = URLDecoder.decode(gbkURL, "GBK");
System.out.println(utf8);
System.out.println(gbkURL);
System.out.println("ISO解碼: "+isoDec);
System.out.println("UTF解碼: " +utfDec);
System.out.println("GBK解碼: " +gbkDec);
System.out.println("正常iso轉gbk: " +iso2gbk); //這是正常情況
System.out.println("錯誤iso轉gbk: " +uft2gbk); //這個將伺服器解碼配置改成GBK即可
}
}
6、http協議中get和post的區別
Get:是以實體的方式得到由請求URI所指定資源的信息,如果請求URI只是一個數據產生過程,那麼最終要在響應實體中返回的是處理過程的結果所指向的資源,而不是處理過程的描述。
Post:用來向目的伺服器發出請求,要求它接受被附在請求後的實體,並把它當作請求隊列中請求URI所指定資源的附加新子項,Post被設計成用統一的方法實現下列功能:
1:對現有資源的解釋
2:向電子公告欄、新聞組、郵件列表或類似討論組發信息。
3:提交數據塊
4:通過附加操作來擴展資料庫
從上面描述可以看出,Get是向伺服器發索取數據的一種請求;而Post是向伺服器提交數據的一種請求,要提交的數據位於信息頭後面的實體中。
7、post和get的區別?
一、功能不同
1、get是從伺服器上獲取數據。
2、post是向伺服器傳送數據。
二、過程不同
1、get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。
2、post是通過HTTP post機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。
三、獲取值不同
1、對於get方式,伺服器端用Request.QueryString獲取變數的值。
2、對於post方式,伺服器端用Request.Form獲取提交的數據。
四、傳送數據量不同
1、get傳送的數據量較小,不能大於2KB。
2、post傳送的數據量較大,一般被默認為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。
五、安全性不同
1、get安全性非常低。
2、post安全性較高。
如果沒有加密,他們安全級別都是一樣的,隨便一個監聽器都可以把所有的數據監聽到。
8、怎樣連接web並向web伺服器發送http get消息
使用webbrowse組件
9、伺服器如何處理http請求
1.需求
了解服務端如何處理http請求,了解基本的處理流程
2.實戰
處理http請求分為7個步驟
2.1 Tcp連接
建立一條tcp鏈接,(若之前不存在持久鏈接keep-alive),把客戶端的ip和port,服務端的ip和port數據放到web伺服器連接表中。伺服器隨時監聽鏈接表中的鏈接,看有沒有數據變化
2.2 接收http請求
一旦我們發送http請求了,這條tcp鏈接就開始工作了。因為web伺服器鏈接表中有許多鏈接需要被處理,處理的方式有單線程,多線程這些(這些涉及操作系統的知識)。
2.3 處理http請求
處理的過程大致是把請求的信息解析出來,如下圖
2.4 訪問資源
訪問資源可以是訪問靜態資源,這個就直接根據url地址去伺服器里找就好了。
訪問動態資源的話要經過一個叫cgi的東西,再用服務端腳本處理,再返回給前端。如下圖所示
2.5 構建響應
要是找到資源,則構建響應信息,包括響應的對象類型,長度,狀態碼。
另一個情況是重定向響應,就是直接返回一個重定向,客戶端看到之後,立刻再向重定向的地址發起請求。重定向的響應的狀態碼一般是3xx。
2.6 發送響應
把構建的響應發送給客戶端
2.7 記錄日誌
服務端對這個請求響應過程進行記錄。(另外專門再講)
3.總結
以上是服務端處理http請求的大致過程。能讓大家有個大致輪廓,當然裡面有很多細節的知識沒講到,要另外查詢資料並學習
10、HTTP 伺服器GET/POST 問題求助
HTTP是Web協議集中的重要協議,它是從客戶機/伺服器模型發展起來的。客戶機/伺服器是運行一對相互通信的程序,客戶與伺服器連接時,首先,向伺服器提出請求,伺服器根據客戶的請求,完成處理並給出響應。瀏覽器就是與Web伺服器產生連接的客戶端程序,它的埠為TCP的80埠,。瀏覽器與Web伺服器之間所遵循的協議就是HTTP。
筆者曾在第六期的《用telnet登陸非23埠》一文中寫過關於用telnet訪問http/1.0,恰逢有朋友問起用netants下載文件時發生的一個關於http/0.9問題,打開IE5.0選擇工具、Internet選項、高級,可以發現HTTP/1.1的設置,使用HTTP/1.1。所以,這里想向大家詳細介紹關於HTTP協議的發展歷程,以便於大家更好的運用HTTP訪問Internet。
HTTP的早期版本為HTTP/0.9,它適用於各種數據信息的簡潔快速協議,但是其遠不能滿足日益發展各種應用的需要。但HTTP/0.9作為HTTP協議具有典型的無狀態性:每個事務都是獨立進行處理的,當一個事務開始就在客戶與伺服器之間建立一個連接,當事務結束時就釋放這個連接。HTTP/0.9包含Simple-Request&Simple-Responsed的報文結構。但是客戶無法使用內容協商,所以伺服器也無法返回實體的媒體類型。
1982年,Tim Berners-Lee提出了HTTP/1.0,在此後的不斷豐富和發展中,HTTP/1.0成為最重要的面向事務的應用層協議。該協議對每一次請求/響應,建立並拆除一次連接。其特點是簡單、易於管理,所以它符合了大家的需要,得到了廣泛的應用。其缺點是仍會發生下列問題:對用戶請求響應慢、網路擁塞嚴重、安全性等。
1997年形成的HTTP/1.1,也就是現在普遍使用的協議,在持續連接操作機制中實現流水方式,即客戶端需要對同一伺服器發出多個請求時,其實現在多數的網頁都是有多部分組成(比如多張圖片),可用流水線方式加快速度,流水機制就是指連續發出多個請求並等到這些請求發送完畢,再等待響應。這樣就大大節省了單獨請求對響應的等待時間,使我們得到更快速的瀏覽。
另外,HTTP/1.1伺服器端處理請求時按照收到的順序進行,這就保證了傳輸的正確性。當然,伺服器端在發生連接中斷時,會自動的重傳請求,保證數據的完整性。
HTTP/1.1還提供了身份認證、狀態管理和Cache緩存等機制。這里,我想特別提一下關於HTTP/1.1中的Cache緩存機制對HTTP/1.0的不足之處的改進,它嚴格全面,既可以減少時間延遲、又節省了帶寬。HTTP/1.1採用了內容協商機制,選擇最合適的用戶的內容表現形式。
現在,很多地方都有用到的虛擬主機技術在HTTP/1.1中也可以實現。所謂的虛擬主機技術,就是同一主機地址實際對應多台主機。通俗的講,當你同時在一個網站申請兩個主頁時,用協議分析儀可以發現其實這兩個主頁對應的是同一個IP地址。這樣用多台完全相同的機器形成WWW伺服器就可以提高處理的吞吐量。
傳統的解決方案是改造域名伺服器使其可以根據一定的演算法將同一域名解釋成不同的IP地址。分別對應虛擬主機的每台機器,其缺點是要求每台機器佔用完全獨立的IP地址,這與IP地址的缺乏是相矛盾的。
HTTP/1.1提供的解決方案在HTTP協議自身中加入了指定不同主機的功能,從而多台主機可以共享一個IP地址,既提高了性能又便於管理。
因為HTTP/1.1是Internet現行的標准協議,這里詳細介紹其相關語法。
首先,HTTP/1.1格式可寫為:
其中請求方法是請求一定的Web頁面的程序或用於特定的URL。可選用下列幾種:
GET: 請求指定的頁面信息,並返回實體主體。
HEAD: 只請求頁面的首部。
POST: 請求伺服器接受所指定的文檔作為對所標識的URI的新的從屬實體。
PUT: 從客戶端向伺服器傳送的數據取代指定的文檔的內容。
DELETE: 請求伺服器刪除指定的頁面。
OPTIONS: 允許客戶端查看伺服器的性能。
TRACE: 請求伺服器在響應中的實體主體部分返回所得到的內容。
PATCH: 實體中包含一個表,表中說明與該URI所表示的原內容的區別。
MOVE: 請求伺服器將指定的頁面移至另一個網路地址。
COPY: 請求伺服器將指定的頁面拷貝至另一個網路地址。
LINK: 請求伺服器建立鏈接關系。
UNLINK: 斷開鏈接關系。
WRAPPED: 允許客戶端發送經過封裝的請求。
Extension-mothed:在不改動協議的前提下,可增加另外的方法。
比如:
GET /index.html HTTP/1.1
Accept: text/plain /*純ASCII碼文本文件*/
Accept: text/html /*HTML文本文件*/
User-Agent:Mozilla/4.5(WinNT)