12233


phpでcURLを使って以下のコードでiTuneのsearch apiを呼び出しましたがタイムアウトになってしまいます。  
cURLはインストールされています。 タイムアウト時間を設定しなくても結果は同じでした。  
解決方法を教えて下さい。よろしくおねがいします。

[code]

    <?php
      header('Access-Control-Allow-Origin:*');
      header('Content-Type: application/json; charset=UTF-8');
      require_once 'functions.php';
    
      switch($_SERVER['REQUEST_METHOD']){
        case 'GET':
          if(isset($_GET['term'])&&isset($_GET['country'])){
            $url = 'https://itunes.apple.com/search?';
             $url=$url."term=".$_GET['term']."&country=".$_GET['country'];
             if(isset($_GET['media'])) $url=$url."&media=".$_GET['media'];
             if(isset($_GET['entity'])) $url=$url."&entity=".$_GET['entity'];
             if(isset($_GET['lang'])) $url=$url."&lang=".$_GET['lang'];
             $ch = curl_init();
             curl_setopt($ch, CURLOPT_URL, $url);
             curl_setopt($ch, CURLOPT_TIMEOUT, 10);
             $response = curl_exec($ch);
             $header = curl_getinfo($ch);
             $code = $header['http_code'];
             if($code>=400){
               header("HTTP", true, $code);
               echo json_encode($response);
               exit();
             }else{
               echo json_encode($response);
               curl_close($ch);
             }
           }else{
            sendError("Term and country parameter are essential.");
           }
           break;
       }
    
[/code]


CC BY-SA 3.0
2015-06-21T04:45:54.013
11569
2015-07-10T00:01:26.633
2015-06-21T05:34:21.577
3639
7232
question
php
cURLでjsonを取得できない。


functions.phpにてどのような処理をしているか不明ですが、  
私の環境で下記のようなソースにて実行したところ問題なく取得出来ました。

json_encodeしているところをjson_decodeに変更したのと、

[code]

    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
    
[/code]

を追加しています。

[code]

    <?php
    $url = 'https://itunes.apple.com/search?country=jp&term=test';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
    
    $response = curl_exec($ch);
    $header = curl_getinfo($ch);
    $code = $header['http_code'];
    
    if($code>=400){
        header("HTTP", true, $code);
        echo json_encode($response);
        exit();
    }else{
        var_dump( json_decode(trim($response)) );
        curl_close($ch);
    }
    
[/code]


CC BY-SA 3.0
2015-06-23T05:44:11.483
11630
2015-06-23T05:44:11.483
7639
11569
answer


使っていたネットワークがProxyを通していたのでできなかったようです。


CC BY-SA 3.0
2015-07-10T00:01:26.633
12233
2015-07-10T00:01:26.633
7232
11569
answer