繁体   English   中英

httpful POST 请求:获取原始 HTTP 消息

[英]httpful POST request: get raw HTTP message

我使用 httpful 发布消息:

try
{
    $ret = \Httpful\Request::post($url)
            ->addHeaders(array(
                'Content-Type' => 'application/x-www-form-urlencoded'
            ))
            ->body("mystring=".urlencode($msg))
            ->send();
} catch (Exception $e)
{
    trigger_error("Exception :".$e->getMessage()."\n");
}

对方系统无法读取,也无法输出调试信息——如何获取实际发送的原始 HTTP 消息(包括标题、分隔符等)?

try {
    $url = 'https://httpbin.org/post1'; // hasErrors
//    $url = 'https://httpbin.org1/post'; // ConnectionErrorException
    $msg = 'qwe';
    $req = \Httpful\Request::post($url)
                           ->addHeaders([
                               'Content-Type' => 'application/x-www-form-urlencoded',
                           ])
                           ->body('mystring=' . urlencode($msg));
    $res = $req->send();

    if ($res->hasErrors()) {
        print_r("
            <pre>
            *** REQUEST ***             
            Headers: {$req->raw_headers}
            Body: {$req->payload}
            
            
            *** RESPONSE ***  
            Headers: {$res->raw_headers}
            Body: <xmp>{$res->raw_body}</xmp>
            </pre>           
        ");
    }

} catch (\Httpful\Exception\ConnectionErrorException $e) {
    if (isset($req)) {
        print_r("
            <pre>
            *** REQUEST ***             
            Headers: {$req->raw_headers}
            Body: {$req->payload}                                 
            </pre>           
        ");
    }
    if (isset($res)) {
        print_r("
            <pre>
            *** RESPONSE ***  
            Headers: {$res->raw_headers}
            Body: <xmp>{$res->raw_body}</xmp>
            </pre>
        ");
    }
}

要获取实际发送的数据,我觉得最可靠的方法是访问实际发送的数据,即发送的数据。 否则你永远无法确定。

为此,您可以拦截 HTTP stream 或者,为了使事情更容易,您可以欺骗服务器将 URL 解析为实际的代理。 使用适当的证书或信任相同的指令,您可以访问整个请求以及整个响应,以及时间、原始数据和作品。

我通常使用自定义 HTTPS MitM 模块来执行此操作,但有几种选择(只是谷歌“记录 https 代理”) - 我刚刚发现的一个是MockServer ,它似乎支持多种场景。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM