電子書籍の厳選無料作品が豊富!

「Twitterから学ぶ,Web APIのキホン」(http://gihyo.jp/dev/serial/01/perl-hackers-hub/0 …)のサンプルプログラムを参考にitunesの検索apiの検索結果を解析しようとしているのですが解析できなく、何も表示されない状態になります。
itunes 検索api
http://www.apple.com/itunes/affiliates/resources …

まずは上のSearch Examplesにいくつか示しているitunes apiの検索結果(jsonデータ)から"artistId"に対する項目や"artistName"に対する項目を抜き出そうと試みています。
以下は実際に私が実行しているプログラムです。

-----------------------------------------------------------------
print <<"HTML";
Content-type: text/html
<html>
HTML

use LWP::UserAgent;
use URI;
use JSON qw(decode_json);
use Encode qw(encode_utf8);

my $uri =
URI->new('※ここにitunes apiの検索結果のurl入れています');

my $ua = LWP::UserAgent->new;
my $res = $ua->get($uri);
my $json = $res->content;

my $ref = decode_json($json);
for my $applist ( @{ $ref->{results} } ) {
print
encode_utf8("$applist->{artistId}: $applist->{artistName}\n");}
--------------------------------------------------------------------------------------

としているのですが結果は何も表示されません。※cgiはmac 環境にてUTF-8 Mac(CR)で保存しております。
「Twitterから学ぶ,Web APIのキホン」のサンプルプログラムは正常に動いて表示出来ているのでモジュールやPerlのパスには問題ないと思います。
どうすればitunes 検索apiのjsonデータがPerlでちゃんと解析されるのかご教示お願いします。

A 回答 (1件)

CGI としてブラウザでアクセスするのではなく、コマンドラインで実行するとデータが表示されませんか。



こちらで質問としてあげられたコードをコピペしてコマンドラインで実行すると JSON データはちゃんと表示されています。

CGI としてアクセスするとうまく表示されない理由は、このプログラムで作成される出力が HTML ドキュメントとして正しくないからです。

Content-Type: text/html と <html>との間には空行が必要ですし、なによりブラウザに表示するコンテンツは、<body></body> の間に入っていなければなりません。

HTML ドキュメントの構造について調べなおすことをお勧めします。
    • good
    • 0
この回答へのお礼

ありがとうございます。コマンドライン実行で表示出来ました!

HTML記述の初歩的なミスでした。助かりました!
ありがとうございます。

お礼日時:2011/05/12 21:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!