您好,登錄后才能下訂單哦!
一個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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。