>백엔드 개발 >PHP 튜토리얼 >단일 PHP cURL 요청에서 응답 헤더와 본문을 모두 효율적으로 검색하려면 어떻게 해야 합니까?

단일 PHP cURL 요청에서 응답 헤더와 본문을 모두 효율적으로 검색하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-12-16 07:36:13384검색

How Can I Efficiently Retrieve Both Response Headers and Body in a Single PHP cURL Request?

단일 PHP cURL 요청에서 응답 헤더 및 본문 검색

PHP의 cURL 라이브러리는 HTTP 요청을 수행하는 기능을 제공하므로 다양한 용도로 사용할 수 있습니다. 데이터 가져오기 및 통신 작업. 그러나 cURL을 사용할 때 직면하게 되는 일반적인 문제는 단일 요청에서 응답 헤더와 본문을 모두 검색해야 한다는 것입니다.

기본적으로 CURLOPT_HEADER를 true로 설정하면 응답에 결합된 헤더와 본문이 모두 반환되므로 추가 작업이 필요합니다. 개별 구성 요소를 추출하기 위해 구문 분석합니다. 보다 효율적이고 안전한 접근 방식을 위해 다음과 같은 대체 방법을 사용할 수 있습니다.

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);

// Execute the request
$response = curl_exec($ch);

// Extract header and body
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);

이 방법은 CURLINFO_HEADER_SIZE 정보를 사용하여 본문에서 헤더를 분리합니다. 이 접근 방식은 프록시 서버나 특정 유형의 리디렉션을 처리할 때 제한이 있을 수 있습니다. 이러한 경우 안정성을 높이려면 다음 솔루션을 사용하는 것이 좋습니다.

function get_headers_body($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_NOBODY, true);

    // Execute the request and get headers only
    $headers = curl_exec($ch);

    // Close the original handle
    curl_close($ch);

    // Set the necessary header information to a new handle
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));

    foreach (explode("\n", $headers) as $header) {
        // Remove set-cookie headers
        if (stripos($header, 'set-cookie') !== false) {
            continue;
        }
        // Add it to the request
        curl_setopt($ch, CURLOPT_HTTPHEADER, array($header));
    }

    // Execute the request and get the body only
    $body = curl_exec($ch);

    // Close the handle
    curl_close($ch);

    return array(
        'headers' => $headers,
        'body' => $body
    );
}

이 솔루션은 헤더 검색 프로세스를 더 강력하게 제어하여 더욱 안정적인 결과를 보장합니다.

위 내용은 단일 PHP cURL 요청에서 응답 헤더와 본문을 모두 효율적으로 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.