3

我需要从网络服务器下载一个 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

任何帮助将不胜感激。

4

2 回答 2

2

如果您按下“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-urlencodedPOST :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 文档,那么我怀疑这种方法可能行不通,因为您可能只是不知道将哪些值作为这些参数传递。

于 2012-06-13T22:32:56.483 回答
0

如果您需要访问该文件,我相信可能需要身份验证标头。该线程可以帮助您如何在 android 中进行基于表单的身份验证:Android - 基于表单的身份验证

于 2012-06-13T22:32:12.433 回答