【发布时间】:2020-06-04 16:41:51
【问题描述】:
我正在使用 OkHttpClient 向网站网页的 url 发送请求,并通过以下方法存储它提供的 cookie,该方法仅从 stackoverflow 获得。
CookieManager cookieManager = new CookieManager();
cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
ClearableCookieJar cookieJar = new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(this));
OkHttpClient client = new OkHttpClient.Builder()
.cookieJar(cookieJar)
.build();
Request request = new Request.Builder()
.url("www.example.com/homePage")
.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0")
.build();
必须存储cookie,否则网站会将请求重定向到超时页面。
然后,我查看页面的 html 以检查我是否到达了正确的 URL。
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
textView.setText("Failed to get response");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if(response.isSuccessful()){
//String myResponse contains the html of the webpage
final String myResponse = response.body().string();
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText(myResponse);
}
});
}
}
});
现在,我以与 URL“www.example.com/loginPage”类似的方式创建另一个请求变量并尝试查看 html,但它会将我重定向到超时页面,因为请求是在没有发送 cookie 的情况下发出的我是从主页上得到的。
因此,简而言之,我如何从“www.example.com/cookieProviderPage”获取 cookie 并将其存储,然后将该 cookie 用于对该网站所有页面的所有进一步请求。该网站的页面具有不同的 URL,例如“www.example.com/cookieRequiredPage1”、“www.example.com/cookieRequiredPage2”等。
附: - 我已经检查了许多与 cookie 相关的 stackoverflow 问题,但我无法针对我的情况专门实施它们。
【问题讨论】:
标签: android cookies session-cookies okhttp