资讯专栏INFORMATION COLUMN

模拟Http请求

cjie / 3148人阅读

摘要:使用模拟请求打开运行框,输入后按回车键。回显模式编辑模式接下来是考验手速的时候了,单身党一定完胜的游戏。输入按回车键,接着输入连续按两次回车键两次回车代表提交请求输入速度不够快的话,将会连接失败。

使用Telnet模拟Http请求

打开cmd运行框,输入Telnet www.baidu.com 80后按回车键。此时看到的界面是黑屏状态,标题栏显示 Telnet www.baidu.com
如果提示telnet不是内部或外部命令可以参考百度经验。利用快捷键打开“Ctrl+]”打开Telnet回显,按回车键后可以进入编辑状态。

回显模式:

编辑模式:

接下来是考验手速的时候了,单身党一定完胜的游戏。输入GET /index.html HTTP/1.1按回车键,接着输入HOST:www.baidu.com,连续按两次回车键(两次回车代表提交请求)输入速度不够快的话,将会连接失败。可以将代码写入记事本,使用时直接复制就好了。

然后来看看服务器的返回数据:

PHP模拟HTTP请求

Http.class.php

_host = $host;
            $this->_port = $port;
            $this->_requestMethod = strtoupper($method);
            $this->_requestPath = $path;
        }

        /**
         * [setRequestHead 设置请求头信息]
         * @author:JieJie
         * @DateTime:2016-11-25T00:22:04+0800
         * @param      [array] $data [头信息数组]
         */
        public function setRequestHead($data) {
            foreach ($data as $key => $value) {
                $this->_requestHead .= $key.":".$value."
";
            }
            $this->_requestHead .= "
";

            return $this;
        }

        /**
         * [setRequestContent 设置请求正文]
         * @author:JieJie
         * @DateTime:2016-11-25T00:37:53+0800
         * @param  [array] $data 
         */
        public function setRequestContent($data) {
            if($this->_requestMethod != "POST")  
                return $this;

            foreach ($data as $key => $value) {
                $this->_requestContent .= "{$key}={$value}&";
            }
            $this->_requestContent = rtrim($this->_requestContent,"&")."
";
            return $this;
        }

        /**
         * [sendRequest 发送HTTP请求并获取结果]
         * @author:JieJie
         * @DateTime:2016-11-25T00:51:53+0800
         */
        public function sendRequest() {
            //拼接请求行
            $http = "{$this->_requestMethod} {$this->_requestPath} HTTP/{$this->_httpVersion}
";
            //拼接请求头
            $http .= $this->_requestHead;
            //拼接请求正文
            $http .= $this->_requestContent;
            //创建连接
            $fp = fsockopen($this->_host,$this->_port,$errno,$errstr);
            if(!$fp) 
                throw new Exception($errstr);

            //发送请求
            fwrite($fp, $http);
            //获得结果
            $result = "";
            while (!feof($fp)) 
                $result .= fgets($fp);

            return $result;
        }
    }
?>

client.php

"www.jiejieyh.cn",
        "User-Agent"=>"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0",
        "Accept"=>"application/json, text/javascript, */*; q=0.01",
        "Accept-Language"=>"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
        "Accept-Encoding"=>"gzip, deflate",
        "Content-Type"=>"application/x-www-form-urlencoded;",
        "charset"=>"UTF-8",
        "X-Requested-With"=>"XMLHttpRequest",
        "Referer"=>"http://www.jiejieyh.cn",
        "Content-Length"=>47,
        "Connection"=>"keep-alive"
    ];
    $requestContent = [
        "password" => "admin",
        "username" => "123456",
    ];
    $result = $Http->setRequestHead($requestHead)->setRequestContent($requestContent)->sendRequest();
    echo $result;
?>

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/23301.html

相关文章

  • 如何模拟一个XMLHttpRequest请求用于单元测试——nise源码阅读与分析

    摘要:概述在我们进行单元测试的过程中,如果我们需要对一些接口进行相关的业务测试,那么我们就需要来模拟请求的发送与响应,否则我们就无法完成测试的闭环。我们再通过记录的数据,组合其他的单元测试框架来对业务代码进行测试。 概述 在我们进行单元测试的过程中,如果我们需要对一些HTTP接口进行相关的业务测试,那么我们就需要来模拟HTTP请求的发送与响应,否则我们就无法完成测试的闭环。 目前,有许许多多...

    KevinYan 评论0 收藏0
  • 使用HttpClient模拟并发请求 - 压力测试

    摘要:文件引入请求工具工具发送请求,参数是开始请求参数创建对象创建对象配置请求参数设置参数和请求方式解决中文乱码问题执行请求异常请求参数,异常信息结束请求参数返回数据异步执行请求和并发测试异步执行请求执行并返回结果模拟并发测试模拟并发 POM文件引入httpclient org.apache.httpcomponents h...

    Charlie_Jade 评论0 收藏0
  • 模拟HTTP请求调用controller

    摘要:可参考本人简书模拟请求调用写在前面实现了对请求的模拟,能够直接使用网络的形式,转换到调用,这样使得测试速度更快,不依赖网络环境。 可参考本人简书:模拟HTTP请求调用controller 写在前面 MockMvc实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller调用,这样使得测试速度更快,不依赖网络环境。而且提供了一套验证的工具。 单测代码如下: @RunW...

    邱勇 评论0 收藏0
  • CURL模拟请求(get/post)

    摘要:而它是常连接,即一次连接服务端可处理多个请求,缩短了延时。是应用层协议,如下是很早之前绘制的,仅予参考就是依据规则,来模拟请求服务器资源的客户端工具。一请求结果把百度一下换成一下实现原理,即是在返回的文件流里,替换查找即可。 【先知】 http协议是客户端和服务端数据交互而定的规范。 具有如下特点: 1.一般是基于B/S结构访问。 2.无状态 服务端没有记忆功能,不能识...

    CoyPan 评论0 收藏0
  • 6、web爬虫讲解2—urllib库爬虫—基础使用—超时设置—自动模拟http请求

    摘要:百度云搜索搜网盘利用系统自带的库写简单爬虫获取一个的源码读出源码内容将字节转化成字符串正则获取页面指定内容获取源码学院实战群正则规则,获取到号将网络文件下载保存到本地,参数网络文件,参数保存路径 【百度云搜索:http://www.lqkweb.com】 【搜网盘:http://www.swpan.cn】 利用python系统自带的urllib库写简单爬虫 urlopen()获取一个U...

    AlanKeene 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<