一、HTTP协议
无状态:每次请求完成就结束连接,下一次请求与上次请求没有关系。
报文:HTTP交互的信息。
telnet模拟请求:
// 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用法:
利用
file_get_content
来发送数据:$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方式:
$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 = "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);