Samle hovudlinjer skilt frå kroppen til svaret. Ei overføring via ein proxy kan levera CONNECT-, autentiserings-, omdirigerings- og målstadsvars-hovud i éin operasjon:

$headerLines = [];
curl_setopt($handle, CURLOPT_HEADERFUNCTION,
    function ($handle, $line) use (&$headerLines) {
        $headerLines[] = $line;
        return strlen($line);
    }
);

Denne callbacken held på den rå linjerekkjefølgja og returnerer talet på godtekne byte. Han tek imot fullstendige linjer; men han grupperer dei enno ikkje i svar eller vel hovuda til den endelege nettsida.

Tolk rekkjefølgja som blokker

Ei HTTP-statuslinje startar ein svarblokk, og ei tom linje avsluttar hovuda i henne. Ta vare på desse grensene før du vel det endelege målstadssvaret. Mellomliggjande autentiseringsforsøk og omdirigeringar kan kvar leggja til blokker.

Trailerar kan koma seinare gjennom callbacken. Hald på nok parser-tilstand til å skilja dei frå dei innleiande hovuda, i staden for å knyta kvart seinare felt til det første svaret.

Ta vare på eller undertrykk tunnelbeviset

Les CURLINFO_HTTP_CONNECTCODE separat for CONNECT-statusen til HTTPS-tunnelen. Ein godteken tunnel fastslår ikkje eit vellukka nettstadssvar.

Viss CONNECT-hovuda ikkje er naudsynte for innsamlararen, styrer CURLOPT_SUPPRESS_CONNECT_HEADERS leveringa deira til den konfigurerte hovudutgangen og callback-banane. Kontroller støtta i den kopla libcurl og PHP-bygget. Undertrykking forenklar innsamlinga, men fjernar tunnelbevis på hovudnivå som kan hjelpa diagnostikken.

Ikkje gjenopprett kroppen med ein fast forskyving eller ved å leita etter ein HTML-tagg. Hovudstorleikar varierer, mellomliggjande svar er ulike, og kroppen kan vera binær eller tom. Ein gammal utgåvespesifikk feilrapport rettferdiggjer ikkje ei gissa forskyving.

Hald kroppshandsaminga skild, og ta vare på overføringsfeilen saman med dei observerte svarfasane viss innsamlinga eller parsinga mislukkast. Det skil ein avbroten callback, misdanna applikasjonsdata og ein avvist proxy-utveksling.

Relaterte artiklar