0

JSONを返すこのWebサービスがあります:

 http://54.246.99.134:8080/services-app/services/Users/GetConfigForMetroAndLang?metroAreaId=1&langId=39

ブラウザを使用してアクセスすると、JSON が取得され、すべて正常に動作しています。CURL または file_get_contents でそれを取得しようとすると、ページはロードし続け ます: ストリームを開くことができませんでした: 接続がタイムアウトしました

他の URL は、サーバー (他のアドレス) から取得しようとするとうまく機能します。

**編集**コメントありがとう

私のコードは非常に簡単です:)

$curl = curl_init('http://54.246.99.134:8080/services-app/services/Users/GetConfigForMetroAndLang?metroAreaId=1&langId=39'); 
curl_setopt($curl, CURLOPT_FAILONERROR, true); 
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101       Firefox/12.0');
 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);   
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 $result = curl_exec($curl); 
 print_r($result) ; 

チームメイトの 1 人のローカルホストから動作することがわかりました...おそらくサーバー/ファイアウォールの問題ですか? 多分どの方向?** /編集 **

どんなアイデアでも本当に感謝します。ありがとう!

4

1 に答える 1

1

私はあなたのコードをチェックしました、それは私にとってはうまくいきます。

ほとんどの場合、問題はサーバーが外部リソースに接続できないことであり、ファイアウォールの制限が原因である可能性があります。

また、URL を操作するallow_url_fopenには、PHP 設定でオンにする必要があります。これは、任意のページでfile_get_contents印刷して確認できます。phpinfo()

またfile_get_contents、リモートファイルの取得ではまったくうまく機能しないため、コンテンツやデータの取得には使用しないでください。また、低速のネットワーク接続やリダイレクトも処理せず、エラー コードも返しません。を使用する必要がありますcurl。また、よりも高速ですfile_get_contents

あなたの問題に関しては、ファイアウォールの問題になると思います。ファイアウォールの設定を確認してください。

また、コードに誤りがあります。$ch と $curl を混在させています。そのはず:

$curl = curl_init('http://54.246.99.134:8080/services-app/services/Users/GetConfigForMetroAndLang?metroAreaId=1&langId=39'); 
curl_setopt($curl, CURLOPT_FAILONERROR, true); 
curl_setopt($curl , CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101       Firefox/12.0');
 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);   
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 $result = curl_exec($curl); 
 print_r($result) ; 

curl_getinfo 特定の転送に関する情報を取得するために使用できます。

于 2013-04-08T05:58:01.293 に答える