访问包含动态内容的网站时,如何获取在处理完JavaScript后在浏览器中显示的网址内容?
例如,okcupid.com/visitors显示最近访问过您的个人资料的用户的姓名。使用okhttp3的标准请求/响应方法,URL内容只有占位符用于用户名/图片的位置。
*编辑:我已经添加了处理项目中所有请求的内容。通常,此coade处理具有会话cookie和访问令牌的请求,没有任何障碍。它只是返回动态内容的网址内容。
public void sendRequest(String URL, String method, String params) {
okhttp3.Request request;
if(method.equals("POST")) {
RequestBody formBody = new FormBody.Builder()
.build();
request = new okhttp3.Request.Builder()
.url(URL)
.post(formBody)
.addHeader("Cookie", this.sessionCookie)
.addHeader("Authorization", "Bearer " + this.accountManager.accessToken)
.build();
} else {
request = new Request.Builder()
.url(URL)
.get()
.addHeader("Cookie", this.sessionCookie)
.build();
}
try {
this.response = client.newCall(request).execute();
ResponseBody responseBody = this.response.body();
this.contentsOfUrl = responseBody.string();
try {
if(this.sessionCookie.equals("")) {
Headers headers = response.headers();
for (int i = 0; i < headers.size(); i++) {
String headerKey = headers.name(i);
String headerValue = headers.value(i);
if (headerKey.equals("Set-Cookie")) {
if (headerValue.startsWith("session=")) {
this.sessionCookie = utils.findString(headerValue, "(session=[a-zA-Z0-9,%]+);", 1);
}
}
}
}
} finally {
responseBody.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}