0

Web サービス API を使用しています。 http://www.douban.com/j/app/radio/people?app_name=radio_desktop_win&version=100&user_id=&expire=&token=&sid=&h=&channel=1&type=n

そのアドレスを chrome に入力すると、期待どおりの結果 (曲情報を含む json ファイル) が返される可能性がありますが、それを使用curlすると失敗しました。(どちらの場合も、レスポンス コードは OK ですが、後者の場合はレスポンス ボディが正しくありません)

Chrome 開発者ツールを使用してダンプされたリクエスト情報は次のとおりです。

Request URL:http://www.douban.com/j/app/radio/people?app_name=radio_desktop_win&version=100&user_id=&expire=&token=&sid=&h=&channel=7&type=n
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:zh-CN,zh;q=0.8
Connection:keep-alive
Cookie:bid="lwaJyClu5Zg"
Host:www.douban.com
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36
Query String Parametersview sourceview URL encoded
app_name:radio_desktop_win
version:100
user_id:
expire:
token:
sid:
h:
channel:7
type:n

ただし、curl でその API を使用すると、curl http://www.douban.com/j/app/radio/people?app_name=radio_desktop_win&version=100&user_id=&expire=&token=&sid=&h=&channel=7&type=n期待した結果が返されません。

Chrome からダンプされたものとして正確なヘッダーを指定しても失敗しました。

curl -v -H "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" -H "Accept-Encoding:gzip,deflat,sdcn" -H "Accept-Language:zh-CN,zh;q=0.8" -H "Cache-Control:max-age=0" -H "Connection:keep-alive"  -H "Host:www.douban.com" -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36" http://www.douban.com/j/app/radio/people?app_name=radio_desktop_win&version=100&user_id=&expire=&token=&sid=&h=&channel=7&type=n

以下は-vfrom curl で出力したものです。すべてが Chrome によって行われたリクエストと同じだったようですが、それでもレスポンスの本文は正しくありません。

GET /j/app/radio/people?app_name=radio_desktop_win HTTP/1.1 ユーザーエージェント: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (Gecko のような KHTML) Chrome/30.0.1599.101 Safari/537.36 Accept :text/html,application/xhtml+xml,application/xml;q=0.9,image/webp, / ;q=0.8 Accept-Encoding:gzip,deflat,sdcn Accept-Language:zh-CN,zh;q=0.8キャッシュ制御:max-age=0 接続:キープアライブ ホスト:www.douban.com

なぜこれが起こったのですか?あなたの助けに感謝。

4

1 に答える 1