javascript - 安卓服务webview

标签 javascript android service webview

我需要从网络服务器下载一个 html 文件。但要做到这一点,我需要登录网站。 登录表单位于 iframe 中,既不允许也不可能直接访问它。(->无 POST)

这就是为什么我使用 javascript 在我的应用程序中自动填写和提交表单。 但现在我需要在后台下载这个文件(作为服务)。 不幸的是,服务没有 UI,所以我似乎不能像以前那样使用 webview。

所以这是我的问题:是否可以在服务中使用 webview? 有没有其他方法可以使用 javascript 与网站交互? 或者有没有其他方法可以自动登录网站?

网站是:https://light.dsbcontrol.de/DSBlightWebsite/(S(jlbbytzvocksc4v2i30gtjli))/Homepage/Player.aspx?ID=b4457c67-24a2-446f-af41-810fba7f723d&MaxWidth=1010&MaxHeight=607&MyDate=0

如有任何帮助,我们将不胜感激。

最佳答案

如果当您按下“weiter”按钮时我没有遗漏任何东西(我猜这是一个“提交”按钮),那么会发生以下情况:

POST /DSBlightWebsite/(S(jlbbytzvocksc4v2i30gtjli))/Homepage/IFrame.aspx?ID=b4457c67-24a2-446f-af41-810fba7f723d&Width=937&Height=530&MyDate=0 HTTP/1.1
Host: light.dsbcontrol.de
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: https://light.dsbcontrol.de/DSBlightWebsite/(S(jlbbytzvocksc4v2i30gtjli))/Homepage/IFrame.aspx?ID=b4457c67-24a2-446f-af41-810fba7f723d&Width=937&Height=530&MyDate=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 273

__VIEWSTATE=%2FwEPDwULLTEwODU4OTkxMzRkZGl5uRxMYz320dUnYalV0rRm4KBLu%2F%2FmncdSoRUaM2Cr&__EVENTVALIDATION=%2FwEWBALArNzjCQK10rnVAQLLus%2B1BQLpvY%2BZD1oB3Xt3JbIIPV05vCoiVbXiTq5FzSyFDPswYprWZto4&ctl02%24txtBenutzername=sdfasf&ctl02%24txtPasswort=asfsad&ctl02%24btnLogin=weiter

如您所见,这是一个 application/x-www-form-urlencoded POST 到 light.dsbcontrol.de/DSBlightWebsite/(S(jlbbytzvocksc4v2i30gtjli))/Homepage/IFrame。 aspx?ID=b4457c67-24a2-446f-af41-810fba7f723d&Width=937&Height=530&MyDate=0 带有一组参数:

__VIEWSTATE=/wEPDwULLTEwODU4OTkxMzRkZGl5uRxMYz320dUnYalV0rRm4KBLu//mncdSoRUaM2Cr
__EVENTVALIDATION=/wEWBALArNzjCQK10rnVAQLLus+1BQLpvY+ZD1oB3Xt3JbIIPV05vCoiVbXiTq5FzSyFDPswYprWZto4
ctl02$txtBenutzername=sdfasf
ctl02$txtPasswort=asfsad
ctl02$btnLogin=weiter

所以我相信您可以使用 HttpClient 直接进行这样的 POST,而无需使用 JavaScript/WebView。您只需要使用您的参数即可。但是我意识到可能不清楚某些参数的含义,但这可能会在 Web API 文档中进行解释。如果没有 Web API 文档,那么我怀疑这种方法可能行不通,因为您可能只是不知道要将哪些值作为这些参数传递。

关于javascript - 安卓服务webview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11024072/

相关文章:

javascript - 如何在 Javascript 中定义自动重新启动的简单倒计时

android - 在 Android 上卸载快捷方式的权限

java - 缓慢的递归函数。我怎样才能加快速度?

grails - grails 服务的首字母应该大写还是小写?

android 实现xmppconnection服务

javascript - 用节点JS替换文件中的字符

javascript - jQuery 获取数据属性并向下滑动它的父级

android - 即使应用程序关闭(终止)也运行服务

javascript - IE8 和 7 上的权限被拒绝错误

android - android 中的 getResources() 遇到错误?