andorid开发教务系统客户端遇到问题了,求大哥大姐指导。。

shystartree 2012-11-12 10:34:21
最近在为学校做个教务系统的客户端,采用的是正方软件的系统,目前用到是httpclient发送请求 和 jsoup分析html ,成功实现登录,但是登录后在通过get请求想实现某个功能查询就出现各种问题,且不说get请求的中文乱码问题,也不知服务器端的编码。 但是目前最大的问题是,电脑浏览的时候,点击各种查询按钮(例如 查个人信息) ,上面的url地址是不变的,依然是首次登录成功后的url:http://jiaowu.XXXXX.com/xs_main.aspx?xh=XXXXX.用httpwtacher查询按照正常的做法,登录后只要发送get请求(例如 查个人信息):http://jiaowu.xxxx.com/xsgrxx.aspx?xh=xxxx&xm=中文name&gnmkdm=N121501 就可以获取html内容了,但是当登录后在浏览器的地址栏 输入上面的get请求的url,竟然返回了登录页面,但是在那个登录后的页面点击ui上的按钮就不会退回登录页面,用httpwatcher查看,都是往同一个url发get请求,为什么不一样呢?
大概就是这样了,想了好几天了,还是解决不了,故发帖求助。
能不能帮小弟我想一下原因,分析一下,说两句也好,小弟andorid新手,求指导。
...全文
235 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZzzCrazyPig 2013-10-05
  • 打赏
  • 举报
回复
请问楼主解决这个问题了么?我最近在弄的时候也遇到这个问题,如果知道了,可以告诉我么,谢谢!
franzhong 2012-11-14
  • 打赏
  • 举报
回复
方式类似以下方式进行请求,你参考一下~

private void processInternetLogin()
    {
      String uriAPI = "http://test.com/index.php";
      String strName ="tester";
      String strPwd = "1234";
      String strRet = "";
      
      try
      {
        DefaultHttpClient httpclient = new DefaultHttpClient();
        HttpResponse response;
        HttpPost httpost = new HttpPost(uriAPI);
        List <NameValuePair> nvps = new ArrayList <NameValuePair>();
        nvps.add(new BasicNameValuePair("name", strName)); 
        nvps.add(new BasicNameValuePair("pwd", strPwd)); 
        
        httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
        
        response = httpclient.execute(httpost);
        HttpEntity entity = response.getEntity();
        //entity = response.getEntity();
        
        Log.d(TAG, "HTTP POST getStatusLine: " + response.getStatusLine());
        
        /* HTML POST response BODY */
        strRet = EntityUtils.toString(entity);
        Log.i(TAG, strRet);
        strRet = strRet.trim().toLowerCase();
        
        List<Cookie> cookies = httpclient.getCookieStore().getCookies();
        if (entity != null)
        {
          entity.consumeContent();
        }
        
        Log.d(TAG, "HTTP POST Initialize of cookies."); 
        cookies = httpclient.getCookieStore().getCookies(); 
        if (cookies.isEmpty())
        {
          Log.d(TAG, "HTTP POST Cookie not found.");
          Log.i(TAG, entity.toString());
        }
        else
        {
          for (int i = 0; i < cookies.size(); i++)
          {
            Log.d(TAG, "HTTP POST Found Cookie: " + cookies.get(i).toString()); 
          } 
        }        
        System.out.println("result:"+strRet);//返回的结果!
      }
      catch(Exception e)
      {
        e.printStackTrace();        
      }
    }
shystartree 2012-11-14
  • 打赏
  • 举报
回复
引用 2 楼 franzhong 的回复:
1:乱码,你必须得知道服务端编码,不然就自已试猜吧 2:返回登录页面,太容易理解了,很简单,你鉴权失败了 你若调用API你需要看人家写的文档,极可能存session或cookie 登录成功后直接请求,是否就正常了
用火狐浏览器查到错误是:该页面正在请求循环重定向,可能是由于禁用了Cookies所致,cookies传过了,还是无补于事,貌似是登陆后,系统先读取你输入的用户名,还有pwd.txt文件中的一个密码,然后用POST方式,把用户名密码,还有页面的一个viewstate和获取的那个cookie一起提交给教务系统的一个验证页面。 就是不知如何用httpclient操作。。。。
franzhong 2012-11-13
  • 打赏
  • 举报
回复
1:乱码,你必须得知道服务端编码,不然就自已试猜吧 2:返回登录页面,太容易理解了,很简单,你鉴权失败了 你若调用API你需要看人家写的文档,极可能存session或cookie 登录成功后直接请求,是否就正常了
搬不搬砖 2012-11-13
  • 打赏
  • 举报
回复
有没有把cookies传过去?一般网站登录成功后会在本地保存cookies,后续的操作会同时把cookies传过去,你可以抓包看一下用浏览器发送时和你自己的程序发送时,http数据包有什么不同

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧