0

xmlフィードを呼び出して使用し、http://www.somewhereinblog.net/indexblog/rss正常に動作するJavaプログラムを作成しました。

しかし、Android バージョンを作成して呼び出すと、プログラムはホストを見つけることができません。このサイトには m.somewhereinblog.net であるモバイル バージョンがあり、フィード URL を呼び出そうとするたびに、その URL を自動変更してに移動します。m.somewhereinblog.net/indexblog/rss フィードがありません。

では、携帯電話がモバイル版を呼び出さないようにするにはどうすればよいですか? アイデアや助けをください

4

1 に答える 1

1

Webサイトは、受信したUser-Agentヘッダーに従ってAndroidプログラムをリダイレクトしています。回避策:フィードを取得するときにデスクトップのUser-Agentヘッダーを送信します。User-Agentヘッダーの完全なリストについては、http://www.useragentstring.com/pages/useragentstring.phpを参照してください。

あなたのコメントに続いて-ここに説明があります。ブラウザがWebサーバーに接続すると、ブラウザはヘッダーでUser-Agent文字列を送信します。User-Agentはクライアント要求を識別し、多くの場合、オペレーティングシステム、使用しているブラウザのバージョンなどを指定します。

たとえば、Androidを実行しているモバイルブラウザは、それ自体を次のように識別します。

User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; en-ca; LG-P505R Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

一方、Windows 8のデスクトップブラウザは次のようなものを送信する可能性があります:

User-Agent: Mozilla/6.0 (Windows NT 6.2; WOW64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1

上記の例では、User-Agentに、オペレーティングシステムと、リクエストを発信したブラウザのバージョンと名前に関する情報が含まれていることに注意してください。Webサーバーはこの情報を使用して、提供するページを決定します。

フィードをリクエストすると、Androidのプログラムがモバイルページにリダイレクトされるため、Androidでリクエストを生成するために使用しているAPIが、モバイルデバイスであることを示すUser-Agent文字列を送信している可能性が高くなります。

回避策は、ヘッダーで送信されているUser-Agent文字列をオーバーライドして、Webサーバーが要求がデスクトップシステムからのものであると見なすようにすることです。これが、ユーザーエージェント文字列のリストへのリンクを投稿した理由です。これにより、さまざまな設定を選択してテストできます。

要約すると、別のURLをリクエストする必要はありませんが、デスクトップバージョンと同じURLからフィードをリクエストしますが、ウェブサーバーに渡されるヘッダーのUser-Agent文字列が、リクエストがデスクトップブラウザからのものであることを確認します。モバイル版にリダイレクトされないようにするためのモバイル版ではありません。

于 2013-02-12T07:10:01.593 に答える