Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: JSON-datan lukeminen Veikkauksen sivuilta PHP:llä

Sivun loppuun

mmikko [23.04.2015 12:49:15]

#

Moi!

Veikkaus näköjään tarjoaa jonkinmoista json rajapintaa. en vain saa jostain syystä mitään kuitenkaan näkyville php:lla. virheitäkään ei tule. tyhjää vaan. file_get_contest on enabloituna php.inissä.

osoite: https://www.veikkaus.fi/api/v1/sport-games/draws?game-names=SPORT

etenkin tuon brandname=1 saaminen taulukkoon olisi hyvä, mutta kaikkikin kävisi.

olen yrittänyt pyöritellä tätä seuraavasti:

$url = ("https://www.veikkaus.fi/api/v1/sport-games/draws?game-names=SPORT");
$haku = file_get_contents($url);
$data =  json_decode($haku);

....

https://github.com/VeikkausOy/sport-games-robot on lisätietoa tuosta.

Blaze [23.04.2015 14:55:20]

#

lainaus:

karri@sanae ~> lynx -dump -head "https://www.veikkaus.fi/api/v1/sport-games/draws?game-names=SPORT"
HTTP/1.1 200 OK
Date: Thu, 23 Apr 2015 11:50:47 GMT
Cache-Control: public, s-maxage=60, max-age=60
ETag: "0785cbbbb1e30394caf31c6e093ae822f"
Content-Encoding: gzip
X-Frame-Options: sameorigin
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=86400; includeSubDomains
Content-Length: 5677
Age: 29
Connection: close
Content-Type: application/json
Set-Cookie: Veikkaus=407966041.20480.0000; path=/

Veikkaus näyttäis lähettävän JSONinsa gzip-pakattuna. Pura siis pakkaus ensin:

$url = ("https://www.veikkaus.fi/api/v1/sport-games/draws?game-names=SPORT");
$haku = file_get_contents($url);
$purettudata = gzdecode($haku);
$data =  json_decode($purettudata);

....

mmikko [23.04.2015 16:05:34]

#

kiitos!
tyhjää potkii vieläkin.. :/

t: mmikko

Eki++ [23.04.2015 16:14:00]

#

Tuleeko muuttujaan data yhtään mitään? Oletko kokeillut tulostaa var_dumpilla tms?

mmikko [23.04.2015 16:39:39]

#

Eki++ kirjoitti:

Tuleeko muuttujaan data yhtään mitään? Oletko kokeillut tulostaa var_dumpilla tms?

moi eki,

ei tule mitään. tyhjää vain...

error_reporting(E_ALL);

$url = ("https://www.veikkaus.fi/api/v1/sport-games/draws?game-names=SPORT");
$haku = file_get_contents($url);
$purettudata = gzdecode($haku);
$data =  json_decode($purettudata);

var_dump($data);
echo $data;
print_r($data);

echo "<table>
           <tr>
                <td><strong>test</strong></td>

            </tr>";

foreach($data as $tulos):?>

            <tr>
                <td><?php echo $tulos->{'id'}?></td>
                <td><?php echo $tulos->{'home'}?></td>
                <td><?php echo $tulos->{'away'}?></td>
            </tr>

<?php endforeach;
      echo "</table>";

Metabolix [23.04.2015 17:25:07]

#

Minulla kyllä tuo koodisi tuottaa paljonkin tulostetta, tosin kaatuu echo-rivillä virheeseen ”Object of class stdClass could not be converted to string”.

Kai olet tietoinen, että error_reporting ei vielä tee virheistä välttämättä näkyviä, vaan tarvitaan myös asetus display_errors?

ini_set("display_errors", 1);
ini_set("error_reporting", E_ALL | E_STRICT);

Oletko varma, että käyttämäsi palvelin sallii HTTP-pyynnöt ja että myös openssl on PHP:n asetuksista otettu käyttöön (HTTPS:n takia)?

mmikko [24.04.2015 10:40:54]

#

Moi, mulla on oma ubuntu-serveri kaikki pitäs olla kunnossa myös tuon openssl. kuitenkin jotain vikaa on jossain koska asensin sitte winkkarille xampp:in niin siellä sit toimi. tuon ubuntun saanen korjattua kyllä.

nyt sitten on tuon datan parsimisen kanssa ongelma.

tarkoitus ois saada muotoon:

brandname home(nimi) away(nimi)

pystyisikö joku auttamaan?

t: mikko

t0ll0 [24.04.2015 11:50:35]

#

Aikaisemmin laittamastasi koodista huomaa ettet ole tutustunut veikkaukselta tulevan datan rakenteeseen yhtään.
Minun nähdäkseni nuo tiedot saa ulos esimerkiksi näin.

$data = json_decode($purettudata);
foreach ($data->draws as $draw) {
    foreach ($draw->rows as $row) {
        echo $draw->brandName.' '.$row->outcome->home->name.' '.$row->outcome->away->name.'<br>';
    }
}

mmikko [24.04.2015 13:40:26]

#

t0ll0 kirjoitti:

Aikaisemmin laittamastasi koodista huomaa ettet ole tutustunut veikkaukselta tulevan datan rakenteeseen yhtään.
Minun nähdäkseni nuo tiedot saa ulos esimerkiksi näin. – –

kiitos, nyt pääsen eteenpäin. tuo aikasempi postaamani koodi oli vaan esimerkkinä tuossa, ja tiedossa oli, että ei se noin toimi. olisin toki voinut jätää sen poiskin. ongelma oli omissa laitteissa ku en saanut mitään dataa ulos. ja oikessa olet siinä, että en osanut tulkita tuota veikkauksen datan rakennetta oikein.

kiitos vielä kerran kaikille!


Sivun alkuun

Vastaus

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

Tietoa sivustosta