C 簡單實現HTTP GET POST 請求

2021-08-14 20:01:17 字數 2088 閱讀 2283

http(超文字傳輸協議)是一種客戶端與服務端的傳輸協議,最早用於瀏覽器和伺服器之間的通訊,後來因為其使用靈活、方便等特點,廣泛用於客戶端與服務端的通訊。文章將簡單介紹http協議,同時以c++方式分別實現http get、post 請求

http請求報文的一般格式由4部分組成:請求行、請求頭部、空行、請求資料。如下圖所示:

請求行:包含3部分內容:請求方法,url,協議版本。形式如:get /?aaa=1 http/1.1。請求方法有get、post、head、put、delete、options等。url指請求服務端的位址,可以是相對位址或網域名稱形式的絕對位址。協議版本主要有http/1.1 http/1.0 http/0.9,後面兩種已很少使用了。

請求頭部

:以key/value形式成對表示頭部引數,以英文冒號分隔。key名稱的約定寫法為key,key-name,自定義key名稱一般以「x-」開頭。如php的宣告「x-powered-by:php/5.5.4-1」

空行:用來標識請求頭部的資料已結束。

請求資料

:可選項,這塊內容只在post方式下使用,作為post的資料表示區域。使用這塊內容,要在請求頭部以content-length宣告請求資料長度,以content-type宣告請求資料型別。

http post方式是把請求引數放到http請求報文的請求資料中,為了讓例子更容易看懂,僅保留http post關鍵引數,你還可以自定義一些引數,比如瀏覽器喜歡用的user-agent,accept,connection等等

//這裡忽略掉了socket連線**

http get方式是把請求引數放到http請求報文的請求行url中,所以請求行就是「get /?aaa=1&bbb=2 http/1.1\r\n」。url最大長度通常瀏覽器取255,這和檔案路徑最大長度有關。雖然http允許更大長度,但不建議怎麼做,如果太長了,可以考慮換成post方式

//這裡忽略掉了socket連線**

A 演算法C 簡單實現

一.演算法步驟 1.初始化圖,openlist,closedlist 2.將起點加入openlist,3.在openlist中尋找啟發函式值f g h最小的節點v,4.將v從openlist中刪除,5.將從openlist中刪除的節點v加入closedlist 6.對於節點v周圍的8個節點v1而言 ...

LRU簡單實現C

頁面置換演算法 在位址對映過程中,若在頁面中發現所要訪問的頁面不再記憶體中,則產生缺頁中斷。當發生缺頁中斷時作業系統必須在記憶體選擇乙個頁面將其移出記憶體,以便為即將調入的頁面讓出空間。而用來選擇淘汰哪一頁的規則叫做頁面置換演算法。下面是lru簡單實現 雙向鍊錶,時間複雜度o n include i...

c 簡單實現 string

學習了c 其中stl是當之無愧的佼佼者。簡單實現一些stl容器 string,只寫了部分功能。模擬實現乙個簡單的stirng容器 pragma once define crt secure no warnings 1 include include include using namespace s...