android模拟登录后带cookie访问受保护的网站例如学校教务网

android模拟登录后带cookie访问受保护的网站比如学校教务网
自己琢磨开发一个学校教务网安卓客户端,已经实现了模拟登录到教务网并且获得了服务器返回的cookie,问题出在附带cookie再次访问成绩查询课表查询等页面。按照网上的方法将cookie一起POST上去,出现链接重定向异常。 因为是自己感兴趣学,水平有限代码可能有错误,求大神们指点一下,已经扣了一个星期脑袋了。代码如下


import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.AbstractHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import com.huxinyu.gethtml.utils.StreamTools;

public class GetHtmlService {
public static String GetXSCJ(String username,String password,String path,String cj_path){
//因为每次登录教务网POST的下列参数都不变所以这里直接写死
String __VIEWSTATE1="dDw0MjY4MTY5NTE7dDxwPGw8dGpxcjs+O2w8MTs+P........";
String __VIEWSTATE="dDwyODE2NTM0OTg7Oz7DjHbBceJNKdGwAEGQuxU3BgFR7w==";
String txtSecretCode="";
String RadioButtonList1="学生";
String Button1="登录";
String lbLanguage="";
String hidPdrs="";
String hidsc="";
String text="";
String sessionId="";
//实例化浏览器对象
try {
HttpClient httpclient=new DefaultHttpClient();
//建立httppost连接
HttpPost httppost=new HttpPost(path);
//添加post到服务器的内容
List<NameValuePair> parameters=new ArrayList<NameValuePair>();
parameters.add(new BasicNameValuePair("__VIEWSTATE", __VIEWSTATE));
parameters.add(new BasicNameValuePair("txtUserName", username));
parameters.add(new BasicNameValuePair("TextBox2", password));
parameters.add(new BasicNameValuePair("txtSecretCode", txtSecretCode));
parameters.add(new BasicNameValuePair("RadioButtonList1",RadioButtonList1 ));
parameters.add(new BasicNameValuePair("Button1", Button1));
parameters.add(new BasicNameValuePair("lbLanguage", lbLanguage));
parameters.add(new BasicNameValuePair("hidPdrs", hidPdrs));
parameters.add(new BasicNameValuePair("hidsc", hidsc));
//设置post参数个格式
httppost.setEntity(new UrlEncodedFormEntity(parameters, "UTF-8"));
//开启post
HttpResponse response=httpclient.execute(httppost);
//获取访问服务器的返回值
int code=response.getStatusLine().getStatusCode();
//获取返回的cookie值
if(code==200){
List<Cookie> cookies = ((AbstractHttpClient) httpclient).getCookieStore().getCookies();  
        for (int i = 0; i < cookies.size(); i++){
         sessionId = cookies.get(i).getValue();
        }
        System.out.println(sessionId);
        
        try {
                                        //附带cookie再次post
HttpPost cj_post = new HttpPost(cj_path);  
List<NameValuePair> cj_parameters = new ArrayList<NameValuePair>();
cj_parameters.add(new BasicNameValuePair("EVENTARGUMENT", ""));
cj_parameters.add(new BasicNameValuePair("__EVENTTARGET", ""));
cj_parameters.add(new BasicNameValuePair("__VIEWSTATE", __VIEWSTATE1));
cj_parameters.add(new BasicNameValuePair("ddlxn", "2013-2014"));
cj_parameters.add(new BasicNameValuePair("ddlxq", "2"));
cj_post.setHeader("Cookie","ASP.NET_SessionId="+ sessionId);
cj_post.setEntity(new UrlEncodedFormEntity(cj_parameters, "UTF-8"));
HttpResponse cj_response=httpclient.execute(cj_post);
int code1=cj_response.getStatusLine().getStatusCode();
System.out.println(code1);
InputStream is=cj_response.getEntity().getContent();
text=StreamTools.readInputStream(is);
  

System.out.println(text);



return text;
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
System.out.println(3);
return null;
}
        
}else{
System.out.println(1);
return null;
}


} catch (Exception e) {
e.printStackTrace();
System.out.println(2);
return null;
}
}
}

------解决思路----------------------
建议直接使用httpclient,然后发送二个请求,第一个登陆请求,第二个访问具体页面的请求,保证二次使用同一个httpclient去调用请求,这样就能访问了,保持了session。
------解决思路----------------------
引用:
Quote: 引用:

建议直接使用httpclient,然后发送二个请求,第一个登陆请求,第二个访问具体页面的请求,保证二次使用同一个httpclient去调用请求,这样就能访问了,保持了session。

是使用的同一个httpclient去发送请求带cookie访问时出现重定向异常Caused by: org.apache.http.client.CircularRedirectException: Circular redirect to 'http://。。。。
 我百度了下,你试着解决下
http://z1y1m1.blog.163.com/blog/static/518373272013626778409/