【发布时间】:2011-05-21 15:45:55
【问题描述】:
我正在尝试创建一个 Android 应用来检查我在工程学校的考试成绩。为了下载包含分数的 Word,我需要登录门户。
我认为发送 POST 请求会很简单。
由于此页面上的代码绕过了自签名证书(或其他)的问题:Self-signed SSL acceptance on Android
我在尝试向登录页面发送任何 POST 请求时仍然收到 500 错误,登录页面如下:https://e-campus.hei.fr/ERP-prod/pc_mv_login.aspx
我尝试了网络上的各种代码来发送 POST 数据(尤其是 How to do a HTTP Post in Android? 这个)。即使在纯 Java 应用程序上,我也能得到 500。
当我将 URL 指向另一个测试页面时,我设法让它工作,但不是在 https://e-campus.hei.fr/ERP-prod/pc_mv_login.aspx
谁能向我解释为什么它不起作用或帮助我摆脱这个错误?
编辑: 这是通过我的浏览器发送的内容(根据 chrome 开发者工具)
__EVENTTARGET:
__EVENTARGUMENT:
__VIEWSTATE:dDwxNDU4ODc4MDI5O3Q8O2w8aTwwPjs+O2w8dDw7bDxpPDE+O2k8Nz47aTwxMz47aTwxNT47aTwxNz47aTwxOT47PjtsPHQ8cDxwPGw8VGV4dDs+O2w8SWRlbnRpZmlhbnQgOjs+Pjs+Ozs+O3Q8cDxwPGw8VGV4dDs+O2w8TW90IGRlIHBhc3NlIDo7Pj47Pjs7Pjt0PHA8cDxsPFRleHQ7PjtsPExhbmd1ZSA6Oz4+Oz47Oz47dDx0PDt0PGk8Mj47QDxBbmdsYWlzO0ZyYW7Dp2Fpczs+O0A8ZW47ZnI7Pj47bDxpPDE+Oz4+Ozs+O3Q8cDxwPGw8VGV4dDs+O2w8Vm91cyBuJ8OqdGVzIHBhcyBhdXRvcmlzw6kgIMOgIHZvdXMgY29ubmVjdGVyLjs+Pjs+Ozs+O3Q8cDxwPGw8VGV4dDs+O2w8Q29ubmVjdGVyIDo7Pj47Pjs7Pjs+Pjs+Pjs+inmhCwE9zfymuEXDXGORShkB1GI=
Username:******
Password:******
Langues:fr
Button1:Connecter :
这是我发送的字符串:
String parameters = "__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE="
+ URLEncoder
.encode("dDwxNDU4ODc4MDI5O3Q8O2w8aTwwPjs+O2w8dDw7bDxpPDE+O2k8Nz47aTwxMz47aTwxNT47aTwxNz47aTwxOT47PjtsPHQ8cDxwPGw8VGV4dDs+O2w8SWRlbnRpZmlhbnQgOjs+Pjs+Ozs+O3Q8cDxwPGw8VGV4dDs+O2w8TW90IGRlIHBhc3NlIDo7Pj47Pjs7Pjt0PHA8cDxsPFRleHQ7PjtsPExhbmd1ZSA6Oz4+Oz47Oz47dDx0PDt0PGk8Mj47QDxBbmdsYWlzO0ZyYW7Dp2Fpczs+O0A8ZW47ZnI7Pj47bDxpPDE+Oz4+Ozs+O3Q8cDxwPGw8VGV4dDs+O2w8Vm91cyBuJ8OqdGVzIHBhcyBhdXRvcmlzw6kgIMOgIHZvdXMgY29ubmVjdGVyLjs+Pjs+Ozs+O3Q8cDxwPGw8VGV4dDs+O2w8Q29ubmVjdGVyIDo7Pj47Pjs7Pjs+Pjs+Pjs+inmhCwE9zfymuEXDXGORShkB1GI=",
"UTF-8") + "&Username="
+ URLEncoder.encode(mUsername, "UTF-8") + "&Password="
+ URLEncoder.encode(mPassword, "UTF-8")
+ "&Langues=fr&Button1="
+ URLEncoder.encode("Connecter :", "UTF-8");
【问题讨论】:
-
你能发布发送的标题吗?
-
我正在浏览页面源。在表单字段中,除了用户名和密码之外,还有 3 个字段:__EVENTTARGET、__EVENTARGUMENT 和 __VIEWSTATE。在您的代码中,您是否也在 POST 请求中发送这些值?