从 moodle 下载带有 webView 的改造 2.3 的 pdf - Android
Download pdf with retrofit 2.3 with webView from moodle - Android
我正在 webView
中加载一个 url
,网站是 php
base moodle
。在 webView 中有很多 *.pdf
,我需要下载那些 pdfs
但我不能,只能下载登录页面。
注意事项:
1- 我在 webView
中登录网站,然后我得到 cookies
如下所示:
urlListClassWebView.setWebViewClient(new CustomBrowsers());
urlListClassWebView.getSettings().setLoadsImagesAutomatically(true);
urlListClassWebView.getSettings().setJavaScriptEnabled(true);
urlListClassWebView.clearHistory();
urlListClassWebView.setHorizontalScrollBarEnabled(false);
urlListClassWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
urlListClassWebView.loadUrl(url);
urlListClassWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
if (url.contains(".pdf")) {
String cookies = CookieManager.getInstance().getCookie(url);
}
}
});
2- 然后我将 cookies
发送到 moodle
,就像下面的改造 2.3 一样:
@Headers({
"Referer: http://xx.xx.xx/course/view.php?id=2484",
"User-Agent: Mozilla/5.0 (Linux; Android 7.0; SM-G920F Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/62.0.3202.84 Mobile Safari/537.36",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Upgrade-Insecure-Requests: 1"
})
@POST
@FormUrlEncoded
Call<ResponseBody> downloadFile(@Url String url,
@Field("_ga") String _ga,
@Field("MoodleSession") String MoodleSession,
@Field("MOODLEID1_") String MOODLEID1_,
@Field("loglevel") String loglevel);
解决了我的问题:
1-首先我得到 cookies
我创建它们的方式是:aa=546345; bb=dfjds65;
2-然后我像下面这样改造通过它:
@POST
Call<ResponseBody> downloadFile(@Url String url,
@Header("Cookie") String sessionIdAndToken);
我正在 webView
中加载一个 url
,网站是 php
base moodle
。在 webView 中有很多 *.pdf
,我需要下载那些 pdfs
但我不能,只能下载登录页面。
注意事项:
1- 我在 webView
中登录网站,然后我得到 cookies
如下所示:
urlListClassWebView.setWebViewClient(new CustomBrowsers());
urlListClassWebView.getSettings().setLoadsImagesAutomatically(true);
urlListClassWebView.getSettings().setJavaScriptEnabled(true);
urlListClassWebView.clearHistory();
urlListClassWebView.setHorizontalScrollBarEnabled(false);
urlListClassWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
urlListClassWebView.loadUrl(url);
urlListClassWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
if (url.contains(".pdf")) {
String cookies = CookieManager.getInstance().getCookie(url);
}
}
});
2- 然后我将 cookies
发送到 moodle
,就像下面的改造 2.3 一样:
@Headers({
"Referer: http://xx.xx.xx/course/view.php?id=2484",
"User-Agent: Mozilla/5.0 (Linux; Android 7.0; SM-G920F Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/62.0.3202.84 Mobile Safari/537.36",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Upgrade-Insecure-Requests: 1"
})
@POST
@FormUrlEncoded
Call<ResponseBody> downloadFile(@Url String url,
@Field("_ga") String _ga,
@Field("MoodleSession") String MoodleSession,
@Field("MOODLEID1_") String MOODLEID1_,
@Field("loglevel") String loglevel);
解决了我的问题:
1-首先我得到 cookies
我创建它们的方式是:aa=546345; bb=dfjds65;
2-然后我像下面这样改造通过它:
@POST
Call<ResponseBody> downloadFile(@Url String url,
@Header("Cookie") String sessionIdAndToken);