2017-07-26 6 views
1

私は真剣に灰色の髪をしています。2 JSON。 1つだけの仕事。 json_decode php

私はhttps://api.gdax.com/products/btc-usd/ticker/

のためのデータを[尋ねる]しかし、それはnullを返しますエコーしたいと思います。

ほとんど同じjsonで別のAPIを使用しようとすると、完璧に動作します。

この例では

<?php 

$url = "https://api.bitfinex.com/v1/ticker/btcusd"; 
$json = json_decode(file_get_contents($url), true); 
$ask = $json["ask"]; 
echo $ask; 

この例では、コードでいただきました!間違って良い説明、帰国があり、ヌル

<?php 

$url = "https://api.gdax.com/products/btc-usd/ticker/"; 
$json = json_decode(file_get_contents($url), true); 
$ask = $json["ask"]; 
echo $ask; 

誰を返す働くことができますヌル

+0

最初に変数に 'file_get_contents()'の結果を格納し、実際にサーバから返ってきたものを 'echo'で保存します。これをあなたの質問に追加すると、おそらく 'json_decode()'がなぜそれに問題があるのか​​分かります。 – rickdenhaan

+2

コードに何も問題はありません。サーバーは状態コード400を返す –

答えて

1

」引数を渡さずにこのURLにアクセスします。ホストがリクエストがどこから来たのかをチェックしているときに、しばらく時間がかかる。

$ch = curl_init(); 
$header=array('GET products/btc-usd/ticker/ HTTP/1.1', 
    'Host: api.gdax.com', 
    'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
    'Accept-Language:en-US,en;q=0.8', 
    'Cache-Control:max-age=0', 
    'Connection:keep-alive', 
    'Host:adfoc.us', 
    'User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36', 
    ); 

    curl_setopt($ch,CURLOPT_URL,"https://api.gdax.com/products/btc-usd/ticker/"); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,0); 
    curl_setopt($ch,CURLOPT_HTTPHEADER,$header); 
    $result=curl_exec($ch); 

次に、$ result!にjson_decode()を使用できます。

+0

ええ、これを見た、間違いのために申し訳ありません。私はfile_get_contentsにいくつかのオプションを渡すことができるかどうか分からなかった! – Superdrac

3

そのヌルの結果のサーバーが接続するPHPエージェントを妨げているため、http 400エラーが返されます。 httpリクエストにuser_agentの値を指定する必要があります。

$ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'; 
$options = array('http' => array('user_agent' => $ua)); 
$context = stream_context_create($options); 

$url = "https://api.gdax.com/products/btc-usd/ticker/"; 
$json = json_decode(file_get_contents($url, false, $context), true); 
$ask = $json["ask"]; 
echo $ask; 

あなたはまた、限り、あなたはあなたのターゲットサーバがそれを可能にすることを確認してくださいと、あなたが$ua変数に好きなのuser_agent文字列を使用することができます。

+0

これはCURLソリューションより優れたソリューションだと思います。また、実際の投稿 – GrumpyCrouton

+0

にあなたのコメントを移動して移動しました。 – bubjavier

関連する問題