PHP - 发送HTTP请求并记录完整响应(标头+有效负载)

时间:2014-04-05 18:33:16

标签: php http-headers httprequest httpresponse

我使用此函数来创建HTTP请求,并成功获取响应的主体:

function SendRequest($url, $method, $data, $headers){
    $context = stream_context_create(array
    (
        'http' => array(
            'method' => $method,
            'header' => $headers,
            'content' => $data
        )
    ));

    return file_get_contents($url, false, $context);
}

但我需要一种方法来获取整个HTTP响应(包括标题)! 两者都是出于调试和实际原因。

例如,假设我发出登录webservice的请求,并且在响应中有一个会话cookie。这样我就无法得到它。

*如果可能的话,如果有办法记录请求进行重新布局,那就太好了。

2 个答案:

答案 0 :(得分:0)

查看stream_get_meta_data()功能。对于http流,它将在wrapper_data 2

中包含HTTP响应标头和状态行

答案 1 :(得分:0)

我找到了一种方法,可以使用$http_response_header

function SendRequest($url, $method, $data, $headers) {
    $context = stream_context_create(array
    (
        'http' => array(
            'method' => $method,
            'header' => $headers,
            //'content' => http_build_query($data)
            'content' => $data
        )
    ));

    $response_body = file_get_contents($url, false, $context);
    //var_dump($http_response_header);
    return array(
        'headers' => $http_response_header, 
        'body' => $response_body
    ); 
}

* $ http_response_header将在本地范围内创建