次のURLからjsonデータを取得しようとしています。
https://chart.googleapis.com/chart?cht=gv&chl=digraphフレームワーク{1[color= red]; 2; 3[色=赤]; 4; 5; 6; 7; 8; 9; 10; 11; 12[色=赤]; 13; 14[色=赤]; 15; 16[色=赤]; 17[色=赤]; 2-> 1; 3-> 1; 4-> 1; 5-> 1; 6-> 2; 8-> 9; 9-> 8; 12-> 2; 12-> 3; 12-> 4; 12-> 5; 7-> 6; 7-> 10; 7-> 11; 8-> 7; 13-> 5; 14-> 13; 15-> 6; 16-> 15; 17-> 12; 10-> 4; 11-> 3; 14-> 16; 16-> 17; }&chof = json
私は他の質問で提案されたいくつかの方法を試しました:
$jsonurl = "https://chart.googleapis.com/chart?cht=gv&chl=digraph framework { 1[color=red]; 2; 3[color=red]; 4; 5; 6; 7; 8; 9; 10; 11; 12[color=red]; 13; 14[color=red]; 15; 16[color=red]; 17[color=red]; 2 -> 1; 3 -> 1; 4 -> 1; 5 -> 1; 6 -> 2; 8 -> 9; 9 -> 8; 12 -> 2; 12 -> 3; 12 -> 4; 12 -> 5; 7 -> 6; 7 -> 10; 7 -> 11; 8 -> 7; 13 -> 5; 14 -> 13; 15 -> 6; 16 -> 15; 17 -> 12; 10 -> 4; 11 -> 3; 14 -> 16; 16 -> 17; }&chof=json"
//Method 1
$json = file_get_contents($jsonurl);
// returns an error from the google page: 400. That’s an error. Your client has issued a malformed or illegal request. That’s all we know
//Method 2
$curlSession = curl_init();
curl_setopt($curlSession, CURLOPT_URL, $jsonurl);
curl_setopt($curlSession, CURLOPT_BINARYTRANSFER, true);
curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, true);
$json_decoded = json_decode(curl_exec($curlSession));
curl_close($curlSession);
// returns NULL
// This makes sense if the JSON isn't not returned correctly. I think json_decode() returns NULL if the input is not correct json data.
//Method 3
$json = file_get_contents(urlencode($jsonurl));
// Gives another error: [function.file-get-contents]: failed to open stream: File name too long
コードに生のJSONデータを投稿するだけで、残りのアルゴリズムは正常に機能します。重要なのは、私の実際のコードでは、URLは動的であり、URLからJSONデータを取得できる必要があるということです。
グーグルのセキュリティ問題のようです。しかし、これをどのように解決するかについての手がかりはありません。
これはStackoverflowに関する私の最初の質問です。もっと知りたい場合/質問をなんとか編集する必要がある場合はお知らせください。
前もって感謝します!