Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: PHP: Sivun avausongelma (HTTP/1.1 426 Upgrade Required)

jaketsu [15.06.2019 18:26:28]

#

Tarkoituksena on tallentaa localhostille tietokantaan lähipäivien tv-ohjelmat mm. omien toiveiden mukaisten tietojen listaus-, haku-, sorttaus- ja korostusominaisuuksien takia. Tämähän on periaatteessa oikein simppeliä, mutta törmäsin ongelmaan, joka ei ainakaan vielä ratkennut. Selaimella avattaessa lähdetiedosto (DNA:n ohjelmaopas json-muodossa, esim. Yle TV1) toimii ihan oletusten mukaisesti, mutta php-koodilla haettaessa vastapuoli palauttaa virheilmoituksena

HTTP request failed! HTTP/1.1 426 Upgrade Required

Ensin ajattelin, että joku ominaisuus ei vain toimi omalla koneellani, joten kokeilin tuota webhotellissakin samoin tuloksin. Nyt en keksi mikä upgrade vaaditaan ja mihin versioon. Kokeilin jo laittaa php-koodin alkuun

stream_context_get_default(["http" => ["protocol_version" => 2.0]]);

mutta ei vaikutusta, joten ilmeisesti joko tuosta ei ole kyse tai kokeilin jotain väärää versiota. Olisiko jollain antaa vinkkiä miten sivun saisi luettua php-koodilla?

HTML5 [16.06.2019 00:17:02]

#

Ilmeisesti pitää käyttää cURL-kirjastoa.

jaketsu [16.06.2019 10:25:55]

#

HTML5 kirjoitti:

Ilmeisesti pitää käyttää cURL-kirjastoa.

Kiitos vinkistä. Pikaisesti testattuna ihan näinkin yksinkertainen netistä löytynyt koodi antaa halutun vastauksen:

function get_data($url) {
	$ch = curl_init();
	$timeout = 5;
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
	$data = curl_exec($ch);
	curl_close($ch);
	return $data;
}

The Alchemist [26.06.2019 09:18:06]

#

Kannattaisi varmaan oikeasti tarkistaa lähtövaatimukset lottoamisen sijaan. Vaadittu HTTP-protokollan versio on 1.1. Curlia ei ole pakko käyttää, kun nämä perusasiat onnistuvat myös file_get_contentsilla.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta