【发布时间】:2010-06-08 18:00:28
【问题描述】:
我已经在网上搜索了大约一个星期的方法,但我似乎无法弄清楚。
我正在尝试实现一个应用程序,我的大学可以使用它来让用户轻松登录校园内的各种服务。目前的工作方式是他们去一个在线门户,选择他们想要的服务,填写他们的用户名和密码,然后单击登录。表单数据通过 post(它包括几个隐藏值以及用户名和密码)发送到相应的登录脚本,然后登录脚本并加载服务。
我一直试图通过两种方式解决这个问题。我首先尝试了一个 WebView,但它似乎不想支持通常使该表单工作的所有 html。我得到了我需要的所有元素,用户和密码字段以及登录按钮,但是单击该按钮没有任何作用。我想知道是否需要为它添加一个 onclick 处理程序,但我看不到按钮是如何在 webview 的 html 中实现的,而不是使用单独的 android 元素。
另一种可能性是使用 xml 小部件以良好的相对布局创建表单,这似乎加载速度更快,并且在 android 屏幕上看起来更好。我使用 EditText 字段进行输入,使用微调器小部件进行服务选择,并使用按钮小部件进行登录。我知道如何分别为按钮和微调器制作 onclick 和 item select 处理程序,但我不知道如何通过 POST 以随后启动浏览器的意图发送该数据。我可以使用操作 url 做一个意图,但无法获取 POST 数据来输入它。
这就是我现在所拥有的......
HttpParams params = new BasicHttpParams();
HttpClient client = new DefaultHttpClient(params);
HttpPost post = new HttpPost(action);
String endResult = null;
try
{
post.setEntity(new UrlEncodedFormEntity(myList));
}
catch (UnsupportedEncodingException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
try
{
String response = client.execute(post, new BasicResponseHandler());
endResult = response;
}
catch (ClientProtocolException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
所以我现在的问题是......我如何获取 endResult 屏幕,这应该是我登录到我的服务后返回的页面,并在浏览器中显示它?
【问题讨论】:
-
如果我不想在提交表单时打开浏览器,而只是从服务器获取 JSON 响应并将其显示在另一个活动中,我应该只执行 client.execute(post,new BasicResponseHandler ) 如上?
标签: android forms post android-intent