yahooAPIの使い方を初心者向けで解説しているサイトはないでしょうか??

yahooAPIを使用してデータを読み込みたいのですがエラーになります。

$url = "http://api.map.yahoo.co.jp/LocalSearchService/V1/LocalSearch";
$url .= "?appid=".$applicationId;// アプリケーションID
$url .= "&lat=35.65716694";// 緯度
$url .= "&lon=139.732451945";// 経度
$url .= "&dist=1"; // 対象範囲
$url .= "&category=address";//住所カテゴリ
$url .= "&al=2";//住所レベル
$contents = file_get_contents($url);

IEのアドレス欄にurlを打ち込むとデータは取得できます。
また、取得したデータを保存して同じディレクトリ内に入れて読み込むとうまくいきます。
($contents = file_get_contents(取得したデータのファイル名);)

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/10/26 16:52:31
  • 終了:2009/10/27 20:21:07

ベストアンサー

id:otaxa No.4

Otaxa回答回数25ベストアンサー獲得回数82009/10/26 21:18:40

ポイント100pt

php.iniなどPHPの設定で「allow_url_fopen」がOFFになっているとfile_get_contents()が使用できないことがあるようです。

もしphp.iniが編集できないよでしたら.htaccessを作成して

「php_flag allow_url_fopen on」

を書き足してみてはいかがでしょうか。

※ちなみに質問で提示いただいているコードそのままで僕の環境では動きました。


また、file_get_contentsの代わりとしてcurlが使えれば同じことができます。

関数としてはたとえば以下のようなものです。

<?php
function get_contents($url){
	$contents=NULL;
	//curlが使える場合は使う
	if(function_exists("curl_init")){
		$ch=curl_init();
		curl_setopt($ch,CURLOPT_URL,$url);
		curl_setopt($ch,CURLOPT_HEADER,0);
		curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
		$contents=curl_exec($ch);
		curl_close($ch);
	}
	//使えない場合はfile_get_contentsを使う
	else{
		$contents=file_get_contents($url);
	}
	return $contents;
}
?>

どちらかが使えないと役に立たない関数ですが・・・


※ダミー(?)URLです

http://www.php.net/manual/ja/filesystem.configuration.php#ini.al...

id:lily0717

ありがとうございます。

「php_flag allow_url_fopen on」を試してみましたが、同じエラーが発生しました・・・。

やはり、他の方法を考えてみます。

2009/10/27 10:45:12

その他の回答(3件)

id:goog20090901 No.1

goog20090901回答回数637ベストアンサー獲得回数172009/10/26 17:41:30

ポイント50pt

$urlの変数をやめて、リテラル文字列でfile_get_contentsをコールしても同じですか?

http://q.hatena.ne.jp/answer

id:lily0717

はい。同じ結果になります・・・。

2009/10/26 17:53:26
id:azuco1975 No.2

azuco1975回答回数613ベストアンサー獲得回数162009/10/26 18:00:10

ポイント50pt

simplexml_load_fileをつかってみては?

http://www.doyouphp.jp/php5/php5_simplexml.shtml

id:lily0717

利用しているサーバーがPHP4なのか、使用できませんでした・・・。

追記>>

すいません!!サーバー情報調べてみたらPHP5でした!!でも、エラーです・・・。

どーも、外部のデータを引っ張ってこようとするとエラーになるっぽい・・・。

超初心者なことをしていそうなので、自分できちんと調べてみます;;

2009/10/26 19:58:07
id:scrap49 No.3

scrap49回答回数18ベストアンサー獲得回数42009/10/26 20:58:48

ポイント80pt

yahooAPI以外のURLは取得できるのでしょうか。

他のURLも駄目ならphp_infoでallow_url_fopenはOnになっているか確認しましょう。

Offになっていたらユーザーレベルでは変更できないので他の取得方法でチャレンジしましょう。

http://php.net/manual/ja/filesystem.configuration.php

id:lily0717

ありがとうございます。

確認してみたところ、offになってました・・・。

他の方法を考えます。

2009/10/26 21:44:27
id:otaxa No.4

Otaxa回答回数25ベストアンサー獲得回数82009/10/26 21:18:40ここでベストアンサー

ポイント100pt

php.iniなどPHPの設定で「allow_url_fopen」がOFFになっているとfile_get_contents()が使用できないことがあるようです。

もしphp.iniが編集できないよでしたら.htaccessを作成して

「php_flag allow_url_fopen on」

を書き足してみてはいかがでしょうか。

※ちなみに質問で提示いただいているコードそのままで僕の環境では動きました。


また、file_get_contentsの代わりとしてcurlが使えれば同じことができます。

関数としてはたとえば以下のようなものです。

<?php
function get_contents($url){
	$contents=NULL;
	//curlが使える場合は使う
	if(function_exists("curl_init")){
		$ch=curl_init();
		curl_setopt($ch,CURLOPT_URL,$url);
		curl_setopt($ch,CURLOPT_HEADER,0);
		curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
		$contents=curl_exec($ch);
		curl_close($ch);
	}
	//使えない場合はfile_get_contentsを使う
	else{
		$contents=file_get_contents($url);
	}
	return $contents;
}
?>

どちらかが使えないと役に立たない関数ですが・・・


※ダミー(?)URLです

http://www.php.net/manual/ja/filesystem.configuration.php#ini.al...

id:lily0717

ありがとうございます。

「php_flag allow_url_fopen on」を試してみましたが、同じエラーが発生しました・・・。

やはり、他の方法を考えてみます。

2009/10/27 10:45:12
  • id:lily0717
    あれこれ試しましたが最終的に、otaxaさんの方法でデータを取得することができました。
    (エラーが出ていたのは、単純に記述ミスがあったからです;;すみません!!)
    ご回答いただき、ありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません