2

主に、webview を使用して facebook にログインしました。そのため、どの URL のどの Cookie が CookieManager に保存されているかわかりません。それが可能かどうかはわかりませんが、それを行う方法は知っています。

ここで、Jsoup を使用してページを取得する必要があります。しかし、ページを取得するためにCookieも渡す必要があります。そうしないと、サーバーからエラーページャーが返されます。

ページからの情報が必要なので、Jsoupでそれが欲しい

私はこのようなことを試みていますが、常にエラーページが表示されます:

Map<String, String> cookies = new HashMap<String, String>();
cookies.put(domain1, my_cookie1);
cookies.put(domain2, my_cookie2);
cookies.put(domain3, my_cookie3);
cookies.put(domain4, my_cookie4);

Document doc = Jsoup.connect(uri.toString())
                            .cookies(cookies)
                            .timeout(10000)
                            .get();
Log.e("title", doc.title());

my_cookieは CookieManager から取得されます。私はそれらを印刷したので、それらはnullではありません。

問題はクッキーにあると思います。か否か?解決策はありますか。CookieManager からの Cookie が不足していると思います。

ページを取得する必要があります。

編集:

または、cookimanager を Jsoup に渡すことは可能ですか? そのため、cookiemanager から直接 Cookie を取得できます。または、目的のページを取得するために必要な Cookie を知ることはできますか?

4

1 に答える 1

2

私は問題を解決しました。まず第一に、私はいつも正しいクッキーを手に入れていました。それで、何が問題だったのですか。クッキーを統合するのが間違っていたJsoupか、Jsoup が何か間違ったことをしていました。そのため、最初にページを取得してHttpUrlConnectionから、Jsoup で解析します。このような:

URL form = new URL(uri.toString());
HttpUrlConnection connection1 = (HttpURLConnection)form.openConnection();
connection1.setRequestProperty("Cookie", my_cookie);
connection1.setReadTimeout(10000);
StringBuilder whole = new StringBuilder();
BufferedReader in = new BufferedReader(
new InputStreamReader(new BufferedInputStream(connection1.getInputStream())));
String inputLine;
while ((inputLine = in.readLine()) != null)
      whole.append(inputLine);
in.close();
Document doc = Jsoup.parse(whole.toString());

このコードに関するアドバイスをいただければ幸いです。

于 2013-02-18T00:08:58.780 に答える