中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

網絡通信第一課 C++封裝HTTP請求報文說明

發布時間:2020-06-10 15:12:43 來源:網絡 閱讀:1812 作者:fengyuzaitu 欄目:系統運維

一個HTTP請求報文由請求行(request line)、請求頭部(header)、空行和請求數據4個部分組成


使用C++組裝上述報文

boost::asio::streambuf request;

std::ostream request_stream(&request);

request_stream << "POST /cs/restfull/operationRestfullApi/excuteSqlByCode HTTP/1.1\r\n";

request_stream << "Host: 192.168.0.88:8080\r\n";

//request_stream << "Connection: keep-alive\r\n";

request_stream << "Content-Length: " << strEncodeBuffer.size() << "\r\n";

request_stream << "Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n";

//request_stream << "User-Agent: Mozilla/4.0\r\n";

//request_stream << "Accept-Language: zh-CN\r\n";

request_stream << "\r\n";

request_stream << strEncodeBuffer;


請求行?

request_stream << "POST /cs/restfull/operationRestfullApi/excuteSqlByCode HTTP/1.1\r\n";



請求頭部

request_stream << "Host: 192.168.0.88:8080\r\n";

request_stream << "Connection: keep-alive\r\n";

request_stream << "Content-Length: " << strEncodeBuffer.size() << "\r\n";

request_stream << "Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n";

//request_stream << "User-Agent: Mozilla/4.0\r\n";

//request_stream << "Accept-Language: zh-CN\r\n";

空行

request_stream << "\r\n";

說明:最后一個請求頭之后是一個空行,發送回車符和換行符,通知服務器以下不再有請求頭


請求數據

request_stream << strEncodeBuffer;

說明:請求數據不在GET方法中使用,而是在POST方法中使用。

POST方法適用于需要客戶填寫表單的場合。與請求數據相關的最常使用的請求頭是Content-Type和Content-Length


注意

使用Boost庫asio組件的時候,建立的套接字,如果沒有設置TIME_WAIT的資源銷毀時間,會導致網絡套接字回收緩慢,建議使用代碼如下:

?io_service iosev;
?ip::tcp::socket socket(iosev);
?socket.open(boost::asio::ip::tcp::v4());

//TIME_WAIT回收資源時間

?boost::asio::socket_base::linger option(true, 0);
?socket.set_option(option);


注意

配置連接IP地址和端口的時候,需要注意如果傳遞的IP地址如下:"537MainStreet"會導致程序崩潰異常如果沒有使用ec捕獲異常

?ip::tcp::endpoint ep(ip::address_v4::from_string(strIP),? nPort);

正確代碼

?boost::system::error_code ec;
?ip::tcp::endpoint ep(ip::address_v4::from_string(strIP, ec), nPort);

采用asio庫的時候,需要更多的注意ec的使用,否則需要使用try catch捕獲異常,否則導致程序崩潰


參考

http://blog.csdn.net/zhangliang_571/article/details/23508953


向AI問一下細節

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

AI

鹤峰县| 台湾省| 莆田市| 布尔津县| 航空| 蒲城县| 上林县| 太湖县| 徐州市| 威宁| 嘉鱼县| 黄骅市| 资阳市| 湖州市| 镇江市| 封开县| 津南区| 桂东县| 武定县| 金湖县| 灌南县| 沂南县| 南丹县| 广宁县| 正安县| 嘉禾县| 英德市| 上栗县| 徐汇区| 阿拉善左旗| 普兰店市| 孟津县| 霞浦县| 东山县| 三明市| 怀柔区| 江达县| 横峰县| 库车县| 绥阳县| 桦甸市|