80,363
社区成员
发帖
与我相关
我的任务
分享
public class MainActivity extends Activity {
final String HUPE_LOGIN = "http://jwgl.hbpu.edu.cn/(m2html45co445eunb4vp30fv)/default2.aspx";
// url的前缀部分,中间的安全验证部分,以及最后的包含学生个人信息的供get方法访问的参数部分,在、三者合起来才是最后的url
String urlPrefix = "http://jwgl.hbpu.edu.cn";
String urlFromHead = ""; // "/(m2html45co445eunb4vp30fv)/xxx"格式,前面有斜杠,后面无斜杠
String urlParsered = "";// 前面无斜杠,在前面要记得加"/"
HttpClient client;
HttpResponse response;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
client = new DefaultHttpClient();
}
// 这是和按钮绑定的一个方法,apk运行后点击界面上的按钮,就可以开始模拟一次登陆了
public void startTest(View v) {
new Thread() {
public void run() {
printText();
};
}.start();
}
public void printText() {
if (login()) {
String redirectLocation = getRedirectLocation();
if (redirectLocation != null) {
System.out.println(getText(redirectLocation));
}
}
}
// 模拟登陆
private boolean login() {
HttpPost post = new HttpPost(HUPE_LOGIN); // 用键值对存放参数
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("TextBox1", "201140430124"));
params.add(new BasicNameValuePair("TextBox2", "201140430124"));
try {
post.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
// 发送post请求
response = client.execute(post);
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
// 终止此次post访问
post.abort();
}
return true;
}
// 获取包含重定向信息的头字段
private String getRedirectLocation() {
// 用httpwatch查看时,可以看到post请求的响应消息状态吗是302,里面有location字段
// 但是在模拟器上debug时,响应消息的状态行的状态吗是200,而且里面没有location字段
Header locationHeader = response.getFirstHeader("Location");
if (locationHeader == null) {
return null;
}
return locationHeader.getValue();
}
/*
* @param redirectLocation 重定向的地址
*
* @return 根据重定向得到的网页内容
*/
private String getText(String redirectLocation) {
//
HttpGet httpget = new HttpGet(redirectLocation);
// Create a response handler
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String responseBody = "";
try {
responseBody = client.execute(httpget, responseHandler);
} catch (Exception e) {
e.printStackTrace();
responseBody = null;
} finally {
httpget.abort();
client.getConnectionManager().shutdown();
}
return responseBody;
}
}