PHP中的HTTP协议

一、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);
    原文作者:HTTP
    原文地址: https://segmentfault.com/a/1190000010125704
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞