1. 程式人生 > >C++ 簡單實現HTTP GET/POST 請求

C++ 簡單實現HTTP GET/POST 請求

轉載出處:詳情http://m.blog.csdn.net/article/details?id=16336713

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

HTTP 請求報文
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宣告請求資料型別。
C++ 實現HTTP POST請求
HTTP POST方式是把請求引數放到HTTP請求報文的請求資料中,為了讓例子更容易看懂,僅保留HTTP Post關鍵引數,你還可以自定義一些引數,比如瀏覽器喜歡用的User-Agent,Accept,Connection等等
char *pHttpPost = "POST %s HTTP/1.1\r\n"
"Host: %s:%d\r\n"
"Content-Type: application/x-www-form-urlencoded\r\n"
"Content-Length: %d\r\n\r\n"
"%s";


char* addr = "http://localhost/post.php";
char* host = "127.0.0.1";
int port = 80;
char* msg = "aaa=1&bbb=2";


char strHttpPost[1024] = {0};
sprintf(strHttpPost, pHttpPost, addr, host, port, strlen(msg), msg);


//這裡忽略掉了socket連線程式碼


send(sockClient, strHttpPost, strlen(strHttpPost), 0);


C++ 實現HTTP GET請求
HTTP GET方式是把請求引數放到HTTP請求報文的請求行URL中,所以請求行就是“GET /?aaa=1&bbb=2 HTTP/1.1\r\n”。URL最大長度通常瀏覽器取255,這和檔案路徑最大長度有關。雖然HTTP允許更大長度,但不建議怎麼做,如果太長了,可以考慮換成POST方式
char *pHttpGet = "GET %s?%s HTTP/1.1\r\n"
"Host: %s:%d\r\n\r\n";


char* addr = "http://localhost/get.php";
char* host = "127.0.0.1";
int post = 80;
char* msg = "aaa=1&bbb=2";


char strHttpGet[1024] = {0};
sprintf(strHttpGet, pHttpGet, addr, msg,  host, post);


//這裡忽略掉了socket連線程式碼


send(sockClient, strHttpGet, strlen(strHttpGet), 0);

相關推薦

C++ 簡單實現HTTP GET/POST 請求

轉載出處:詳情http://m.blog.csdn.net/article/details?id=16336713 HTTP(超文字傳輸協議)是一種客戶端與服務端的傳輸協議,最早用於瀏覽器和伺服器之間的通訊,後來因為其使用靈活、方便等特點,廣泛用於客戶端與服務端的通訊。文章

C++ 實現 傳送HTTP Get/Post請求

1、簡述 最近簡單看了一下關於HTTP請求方面的知識,之前一直用Qt來實現,有專門HTTP請求的QNetworkAccessManager類來處理,實現也比較簡單,這裡主要講解一下用C++程式碼來實現HTTP 的Get/Post請求。 一個HTT

C# 實現http get post async sync 上傳檔案

程式碼: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading

java HTTP get post請求,獲取二進位制檔案實現

public class HttpPlugin{ private static Log log = LogFactory.getLog(HttpPlugin.class); @Override public void init() {   }   public void se

Java-簡單的 傳送http get/post請求 呼叫介面/方法

例子如下:1.請求引數srequestUrl 是你要傳送的介面引數用map 存起來 sRet 是返回值 如果傳送的介面有的話就寫 然後呼叫 NetUtils.requset請求 (介面,引數,get/post(選擇一種傳送方式))String sRequestUrl ="ht

Java 模擬 HTTP Get Post 請求實現論壇自動回帖

設計思路 最近想自動發帖回帖,拿某論壇試驗了一下,發現可行,不過後續沒有再使用,免得影響論壇正常執行。 帖子連結的格式為 http://bbs.***.***.**/forum.php?mod=viewthread&tid=774210

Java發送http get/post請求,調用接口/方法

strong org 釋放 github string charset 獲取url lean catch 由於項目中要用,所以找了一些資料,整理下來。 GitHub地址: https://github.com/iamyong 轉自:http://blog.csdn.n

CURL命令模擬Http Get/Post請求

curl post get在對後端程序進行測試的時候,需要進行模擬連接或者書寫測試腳本. curl是一個很棒的命令. 例如目標網站Url:127.0.0.1:8080/check_your_status?user=Summer&passwd=12345678通過Get方法請求:curl protoco

CH9121網絡模塊與阿裏雲PHP服務器通信,實現HTTP-GET/POST

替換 協議 HA HP 完美 .com 正常 應用層協議 add 完全原創, 1、在“參數配置軟件”中,配置CH9121,設置好服務器的域名或IP 2、服務器端口是80,此處不能亂填,配置結束,保存即可。 3、連接串口,保證正常通信的前提下,為CH9121書寫HTTP頭 這

三個例子 —JAVA發送http get/post請求,調用http接口、方法

客戶 trace some php += dom 取數據 響應頭 get方法 三個例子 —JAVA發送http get/post請求,調用http接口、方法 例1:使用 HttpClient import java.io.ByteArrayInputStream; imp

spring boot 常見http get ,post請求引數處理

 在定義一個Rest介面時通常會利用GET、POST、PUT、DELETE來實現資料的增刪改查;這幾種方式有的需要傳遞引數,後臺開發人員必須對接收到的引數進行引數驗證來確保程式的健壯性 GET 一般用於查詢資料,採用明文進行傳輸,一般用來獲取一些無關使用者資訊的資料 POST

Java傳送http get/post請求,呼叫介面/方法

由於專案中要用,所以找了一些資料,整理下來。 GitHub地址: https://github.com/iamyong    轉自:http://blog.csdn.net/capmiachael/article/details/51833531 例1:使用 HttpCl

java實現HTTPpost請求 key-value格式與json格式的區別

之前寫過介面接收json格式的post請求,當時自己寫完以為可以適應各種報文的傳送,最近對方說要有個”content=傳送內容”,這不就是最簡單的post請求嗎,那直接用我之前寫的http://blog.csdn.net/do_finsh/article/det

JAVA傳送http get/post請求,呼叫http介面、方法

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; impo

C++:C語言實現HTTPGETPOST請求例程參考 C++:C語言實現HTTPGETPOST請求

C++:C語言實現HTTP的GET和POST請求   閱讀目錄   HTTP請求和IP/TCP   實現GET請求   實現POST請求:   參考: 回到頂部

Qt實現HTTPGet/Post請求

藉助Qt的NetWork模組,可以輕鬆的實現HTTP的Get/Post請求,而不需要再次引用像libcurl這樣的第三方庫。 當然,Qt的NetWork模組提供的功能遠遠不只是HTTP方面的。 標頭檔案

php 實現http getpost(提交json資料)請求

 介面,抓取資料經常用到 //$arr為提交的資料為json型別 預設 get function http_curl($url,$type='get',$res='json',$arr=''){ //1.初始化curl $ch = cu

Java實現httppostget請求

package com.wolaidai.credit.management.utils; import com.alibaba.fastjson.JSON; import org.apache.commons.logging.Log; import org.apache

Java實現HttpPostGet、代理訪問請求

package getMethod; import java.io.BufferedReader;  import java.io.IOException; import java.io.InputStream;  import java.io.InputStream

python urllib2 實現HTTPGET POST 請求

import os,sys import os,sys import urllib2 http_str = 'http://127.0.0.1:12345/apps/' + serviceLine + '/clusters/' + clusterName url1 = http_str + '/ops/rp