無狀態:每次請求完成就結束鏈接,下一次請求與上次請求沒有關係。php
報文:HTTP交互的信息。app
telnet模擬請求:curl
// GET方式,最後回車換行 Aston$ telnet 127.0.0.1 80 GET /Tools/Test/http.php HTTP/1.1 Host:localhost // POST方式,最後回車換行,輸入參數 Aston$ telnet 127.0.0.1 80 POST /Tools/Test/http.php HTTP/1.1 Host:localhost Content-type:application/x-www-form-urlencoded Content-length:20 name=chenjian&age=28
fiddler用法:socket
利用file_get_content
來發送數據:post
$data = array( 'name' => 'chenjian', 'age' => 28 ); $postData = http_build_query($data); $opts = array( 'http' => array( 'host' => "localhost\r\n", 'method' => "POST", 'header' => "Content-type:application/x-www-form-urlencoded\r\n" . "Content-length:".strlen($postData)."\r\n", 'content' => $postData ); ); $context = stream_context_create($opts); file_get_contents("http://localhost/http/index.php", false, $context);
socket方式:ui
$data = array( 'name' => 'chenjian', 'age' => 28 ); $postData = http_build_query($data); $fp = fsockopen("localhost", 80, $errno, $errorStr, 5); $request = "POST http://localhost/http/socket.php HTTP/1.1\r\n"; $request .= "Host:locahost\r\n"; $request .= "Content-type:application/x-www-form-urlencoded\r\n"; $request .= "Content-length:" . strlen($postData) . "\r\n"; $request .= $postData; fwrite($fp, $request); while (!feof($fp)) { echo fgets($fp, 1024); } fclose($fp);
curl拓展:url
$url = "http://localhost/http/curl.php"; $data = array( 'name' => 'chenjian', 'age' => 28 ); // 1. 初始化curl會話 $ch = curl_init(); // 2. 設置 curl_setopt($ch, CURLOPT_URL, $url); //提交網址 curl_setopt($ch, CURLOPT_POST, 1); //提交方式 curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //提交數據 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //提交成功後返回數據字符串 // 3. 執行 $out_put = curl_exec($ch); // 4. 關閉會話 curl_close($ch); var_dump($out_put);