一、HTTP协议
无状态:每次请求完成就结束连接,下一次请求与上次请求没有关系。
报文:HTTP交互的信息。
-
telnet模拟请求:
// GET方式,最后回车换行Aston$ telnet 127.0.0.1 80GET /Tools/Test/http.php HTTP/1.1Host:localhost// POST方式,最后回车换行,输入参数Aston$ telnet 127.0.0.1 80POST /Tools/Test/http.php HTTP/1.1Host:localhostContent-type:application/x-www-form-urlencodedContent-length:20name=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);