我一直在网上搜索一种方法来执行此操作大约一周,而我似乎无法弄清楚。在Android应用程序中使用POST数据提交表单
我试图实施一个应用程序,我的大学可以使用它来允许用户轻松登录校园中的各种服务。它目前的工作方式是进入在线门户,选择他们想要的服务,填写他们的用户名和密码,然后点击登录。表单数据通过发布(包括几个隐藏值以及用户名和密码)发送到相应的登录脚本,然后登录脚本签入并加载服务。
我一直试图用两种方式来解决这个问题。我第一次尝试了一个WebView,但它似乎并不想支持所有通常使这个表单工作的html。我得到了我需要的所有元素,用户和密码的字段以及登录按钮,但单击该按钮不会执行任何操作。我想知道是否需要为它添加一个onclick处理程序,但我无法看到该按钮是如何在webview的html中实现的,而不是使用单独的android元素。
另一种可能性是使用xml小部件来创建一个漂亮的相对布局,这似乎加载速度更快,在android屏幕上看起来更好。我使用EditText字段作为输入,为服务选择使用微调控件,并使用登录按钮构件。我知道如何分别为button和spinner创建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(发布,新的BasicResponseHandler)如上? – Namratha 2013-01-17 05:53:16