アプリ版:「スタンプのみでお礼する」機能のリリースについて

URL url = new URL("http://***********");

System.out.println(url.openConnection().getContentType());

とすると普通なら text/html; charset=Shift_JIS
などと出ますが、
サイトによっては text/html; charset=Shift_JIS と書かれていても text/html としか表示されません。なぜ?

A 回答 (2件)

> サイトによっては~と書かれていて


これはHTMLのmetaタグのことよね?

HttpURLConnectionのgetContentTypeは
HTMLのmetaタグのデータを取得するものではないわ。
これはHTTPプロトコルに記述されているContent-Typeを取得するものよ。

HTTPプロトコルのContent-Typeは
metaタグとは別に送信されるわ。

Javaで言うなら
HttpURLConnection#setContentTypeがこれに当たるわね。

HTTPプロトコルのContent-Typeは
HttpServletResponse#setContentTypeのように
毎回設定することもできれば
Webサーバで一括で設定することもできるわ。

ここでは話の都合上、仮に毎回設定とするけど
レスポンスにcharset=Shift_JISが設定されていれば
(HttpServletResponse#getCharacterEncodingね)
text/html; charset=Shift_JISが取得される。
設定していなければtext/htmlが取得される。

こんな感じよ。

この回答への補足

メタタグ内部を取得するには文字列を取得してなめていけば取れました(報告)。

補足日時:2009/07/06 16:41
    • good
    • 0
この回答へのお礼

なるほど、とりあえず原因が分かりました。ありがとうございます。

お礼日時:2009/07/06 14:21

> サイトによっては


どんなサイトですか。URLを教えてください。そのHTMLのソースを見れば、原因が分かるでしょう。

この回答への補足

ありがとうございます。ソースを見ても私には分かりませんでした。
例)http://yahoo.co.jp (○)と http://www.javaroad.jp(×)
こぴぺできません

補足日時:2009/07/06 13:59
    • good
    • 0

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