[英]Programmatically filling in a website form using MultipartEntity
我正在参加一个针对Android的移动开发课程,对于我的学期项目,我认为如果我编写一个能够返回与癌症相关的事件和筹款人列表的小应用程序,那将会很酷。 基本上,我要做的就是以程序形式填写应用程序输入的给定条件的Web表单,然后解析返回的结果以提供事件列表,因为出于某种原因,美国癌症协会未公开所有事件的列表。事件。 这是我第一次真正的android经验,而我对网络编程的经验几乎为零。 如果确实需要,我可以根据提供给我的参数更改要访问的URL,因为ACS事件搜索URL看上去几乎完全相同,但是我想“正确”地进行操作。 我看了这个帖子和这个指导,这使我的MultipartEntity。 他们非常有帮助,但是我真的不确定下一步该怎么做。 代码如下:
//Base case, creates entity based on Entered ZIP Code
public void sendRequest()
{
EditText MyEditText = (EditText)findViewById(R.id.zip_edit_text);
String ZIP = MyEditText.getText().toString();
HttpClient defaultClient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.cancer.org/Involved/Participate/app/event-search");
try{
MultipartEntity entity = new MultipartEntity();
entity.addPart("ZIP",new StringBody(ZIP));
httppost.setEntity(entity);
HttpResponse response = defaultClient.execute(httppost);
HttpEntity result = response.getEntity();
InputStream stream = result.getContent();
String s = new Scanner(stream).useDelimiter("\\A").next();
Intent intent = new Intent(HomeScreen.this, ListResults.class);
startActivity(intent);
AlertDialog dialog = new AlertDialog.Builder(this).create();
dialog.setMessage(s);
dialog.show();
}catch (ClientProtocolException e){
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
}
如您所见,它现在是准系统。 AlertDialog仅用于查看HttpResponse的外观,并且看起来可以正确执行POST,并且邮政编码最终位于正确的文本字段中,但实际上并没有“单击”搜索按钮。 我个人认为:1.)我的HttpPost对象的URL不正确2.)我使用POST而不是GET,或者我应该先POST然后GET
我确实尝试自己解决此问题,并搜索了StackOverflow,但确实遇到了一个困难之处,就像我之前说的那样,我几乎没有网络编程经验。 任何帮助,将不胜感激。
我建议您打印出通过multipart方法发送的URL,通过Web浏览器进行搜索,并查看两个URL是否匹配。 如果网址不匹配,则表示设置您的实体时出了点问题,等等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.