3

いくつかのjsonデータを含むデータをWebページからフェッチしたいと思います。問題は、ユーザーがWebサイトにログインしている場合にのみjsonデータが返されることです。そうでない場合は、ログインページが返されます。

URL url = new URL(API_URL);
URLConnection conn = url.openConnection();

BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream)));
StringBuilder builder = new StringBuilder();
String line = "";

while ((line = br.readLine()) != null) {
    builder.append(line + System.getProperty("line.separator"));
}
String result = builder.toString();

だから、result私はjsonデータを持っていることを期待しています。しかし、私はそこにログインページを持っています。ブラウザからログインしてみましたが、うまくいきませんでした。

ブラウザのCookieを使用してこのログインページを通過するにはどうすればよいですか?

4

2 に答える 2

1

ブラウザアプリから任意のCookieを取得したり、ブラウザからデータをダウンロードしたりできるとしたら、これらは重大なセキュリティ上の欠陥になるため、私は非常に心配します。誰かがBankOfAmerica.comにログインしていて、アプリがブラウザからbankofamerica.comセッションCookieを検査したり、bankofamerica.comページをダウンロードしたりできると想像してみてください。どちらの場合でも、アプリはログインした個人としてオンラインバンキングアクションを実行できます!

簡単な答えは、アプリがユーザーのログイン情報を要求する必要があるということです。次にHttpClient、独自のCookieストアでユーザーをサインインします。

于 2010-11-26T18:15:28.863 に答える
1

Java SE を使用している場合は、Apache HttpClient ライブラリを使用することをお勧めします。これは、セッション Cookie を使用したフォームベースのログインなど、さまざまな種類の認証をサポートしています。これが Android に適しているかどうかはわかりません。

編集

私は、実際の問題がブラウザの Cookie へのアクセスにあることに気づいていませんでした。

1:ブラウザの cookiemanager インスタンスを使用android.wewbkit.CookieManager.getInstance()または取得しようとしましたか?createInstance(Context)

2: アプリケーション (またはその一部) を Webkit プラグインとして記述して、その方法で Cookie にアクセスできるようにすることは可能ですか? (これが理にかなっているのかどうかを知るには、webkit / androidについて十分に知りません。)

3: それができない場合は、おそらくアプリケーションを Web プロキシとして記述し、Cookie が通過するときに「盗む」ようにすることができます。(これは悪い考えのように聞こえますが、セキュリティとプライバシーの問題、および通常のブラウザー機能に干渉する可能性があるという問題があります。)

4: 最後に、独自のログインを行い、独自のセッション Cookie を管理するようにアプリケーションを作成するフォールバック オプションがあります。問題は、アプリケーションをリモート Web サイトのログイン方法に固有のものにすることを避けることができないことです。

ファローアップ

@Daniel Trebbien の回答では、オプション 1: はセキュリティ上の理由からスターターではないと主張しています。意味あり。(あるアプリが別のアプリの Cookie を取得できる場合、ブラウザーのセキュリティは存在しません。)

Android はプラグイン API を提供していますが、これは推奨されておらず、Android エンジニアからの投稿で、サード パーティのコードでの使用は推奨されていないと述べているのを見ました。これにより、オプション 2: 行き止まりになります。

オプション 3: ユーザーは、アプリをプロキシとして使用するように携帯電話のブラウザを構成する必要があります...おそらくそうすべきではありません。

考慮すべき他のいくつかのオプションは次のとおりです。

5: アプリケーションの機能を Javascript で NPAPI ブラウザー プラグインとして実装します。

6: WebView を使用して、アプリケーションに独自の (削減された) Web ブラウザーを提供します。アプリケーションは、当然、独自の CookieManager インスタンスに完全にアクセスできます。

于 2010-11-26T15:05:25.260 に答える