Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Json brak możliwości wyświetlania zawartości pliku
Forum PHP.pl > Forum > Przedszkole
brzanek
Witam mam problem z wyświetlaniem zawartości danych z pliku json.
Mam taki kod
  1. <?php
  2. ini_set( 'display_errors', 'On' );
  3. error_reporting( E_ALL );
  4.  
  5. $json = 'https://api.met.no/weatherapi/locationforecast/2.0/.json?lat=53.15&lon=15.42';
  6. $response = json_decode($json, true);
  7. echo "<pre>".print_r(json_decode($response))."</pre>";
  8. ?>

Błędów nie widać na stronie ale nic się nie wyświetla.
Po wywołaniu samego adresu https://api.met.no/weatherapi/locationforec...5&lon=15.42 dane są.
Docelowo chcę zapisać te dane do bazy danych mysql ale jak nic się nie wyświetla to jak to zrobić?
trueblue
Czemu dwukrotnie dekodujesz dane?
nospor
$json = 'https://api.met.no/weatherapi/locationforecast/2.0/.json?lat=53.15&lon=15.42';
$response = json_decode($json, true);

Ale ty tak powaznie? Przeciez teraz decodujesz adres URL a nie to co sie kryje pod tym adresem... Przeciez wpierw masz pobrac to co tam jest chciazby przy pomocy file_get_contents albo najlepiej CURL
brzanek
Zrobiłem tak
  1. $json = 'https://api.met.no/weatherapi/locationforecast/2.0/.json?lat=53.15&lon=15.42';
  2. $data = json_decode($json);
  3. echo $data;

Nic nie ma

Próbowałem też zapisać to na serwerze ale nic z tego
  1. $url = 'https://api.met.no/weatherapi/locationforecast/2.0/.json?lat=53.15&lon=15.42';
  2. $ch = curl_init();
  3. curl_setopt($ch,CURLOPT_URL,$url);
  4. curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);$json_output=curl_exec($ch);
  5. curl_close($ch);
  6. fwrite(fopen('dane.json','w'),$json_output);


Po zastosowaniu tego
  1. $json_string = 'https://api.met.no/weatherapi/locationforecast/2.0/.json?lat=53.15&lon=15.42';
  2. $jsondata = file_get_contents($json_string);
  3. $obj = json_decode($jsondata,true);
  4. echo "<pre>";
  5. print_r($obj);

wywala mi błąd
Warning: file_get_contents(https://api.met.no/weatherapi/locationforecast/2.0/.json?lat=53.15&lon=15.42): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in /home/brzanek/public_html/prognoza/new2/choszczno.php on line 24
to jest ta linia
$jsondata = file_get_contents($json_string);
nospor
Zobacz co ci zwraca CURL, zobacz jakie dostajesz naglowki, jaka dokladnie tresc itp . No po tylu latach na forum trzeba ci ciagle mowic jak masz debugowac?
brzanek
Do tej pory nie miałem problemów z plikami typu json ale z tym mam problem.
Zobacz czy to da się zrobić z tym adresem bo może kombinuję i chcę rzeczy niemożliwych.
Jak mam zobaczyć co mi zwraca CURL?
Do tej pory w taki sposób zapisywałem dane z pliku json do pliku na serwerze i wszystko działała (na innym pliku json z innej strony)
  1. $url = 'https://api.darksky.net/forecast/_KEY_/53.167994,15.423062?lang=pl&extend=hourly&units=ca';
  2. $ch = curl_init();
  3. curl_setopt($ch,CURLOPT_URL,$url);
  4. curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);$json_output=curl_exec($ch);
  5. curl_close($ch);
  6. fwrite(fopen('choszcznonew.json','w'),$json_output);

A z tym plikiem https://api.met.no/weatherapi/locationforec...5&lon=15.42 to nie działa - dlaczego?
nospor
Jak zobaczyc? no var_dump()...

I wspomnialem jeszcze o naglowkach bo one tez niosa kupe waznych informacji. zobacz w manualu jak sie sprawdza naglowki

Cytat
Do tej pory nie miałem problemów z plikami typu json
I jak to sie ma do problemu? Jedyne to, ze jak masz problem to nie umiesz debugowac a tym nie ma co sie chwailic wink.gif
brzanek
Zrobiłem tak
  1. $url = "https://api.met.no/weatherapi/locationforecast/2.0/.json?lat=53.15&lon=15.42";
  2. $headers = array('accept: application/json');
  3. $cSession = curl_init();
  4. curl_setopt($cSession,CURLOPT_URL,$url);
  5. curl_setopt($cSession, CURLOPT_CUSTOMREQUEST, "GET");
  6. curl_setopt($cSession,CURLOPT_RETURNTRANSFER,1);
  7. $result=curl_exec($cSession);
  8. $result = json_decode($result, true);
  9. curl_close($cSession);
  10. var_dump($result);

Strona zwraca NULL
nospor
var_dump masz robic na wynik curl_exec a nie na json_decode....
I mowilem o NAGLOWKACH jeszcze
brzanek
Dałem tak
  1. $url = "https://api.met.no/weatherapi/locationforecast/2.0/.json?lat=53.15&lon=15.42";
  2. $headers = array('accept: application/json');
  3. $cSession = curl_init();
  4. curl_setopt($cSession,CURLOPT_URL,$url);
  5. curl_setopt($cSession, CURLOPT_CUSTOMREQUEST, "GET");
  6. curl_setopt($cSession,CURLOPT_RETURNTRANSFER,1);
  7. $result=curl_exec($cSession);
  8. var_dump($result);

Pojawił mi się błąd na stronie
string(74) "403 Forbidden User-Agent header cannot be empty, use a unique identifier "
Czyli chyba nic z tego nie będzie. Ale dziwne że ten adres nie wyświetla błędów https://api.met.no/weatherapi/locationforec...5&lon=15.42
Może coś z tym da się jeszcze zrobić curl -X GET --header 'Accept: application/json' 'https://api.met.no/weatherapi/locationforecast/2.0/.json?lat=53.15&lon=15.42'
nospor
No widzisz, od razy wszystko jasne.
NO a kumunikat bledu masz wyrazny i latwy do poprawienia. Ustaw naglowek na USER-AGENT i po sprawie
brzanek
Wielkie dzięki za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.