本帖最后由 shystartree 于 2012-11-12 22:37:10 编辑

解决方案 »

  1.   

    有没有把cookies传过去?一般网站登录成功后会在本地保存cookies,后续的操作会同时把cookies传过去,你可以抓包看一下用浏览器发送时和你自己的程序发送时,http数据包有什么不同
      

  2.   

    1:乱码,你必须得知道服务端编码,不然就自已试猜吧
    2:返回登录页面,太容易理解了,很简单,你鉴权失败了
    你若调用API你需要看人家写的文档,极可能存session或cookie
    登录成功后直接请求,是否就正常了
      

  3.   

      用火狐浏览器查到错误是:该页面正在请求循环重定向,可能是由于禁用了Cookies所致,cookies传过了,还是无补于事,貌似是登陆后,系统先读取你输入的用户名,还有pwd.txt文件中的一个密码,然后用POST方式,把用户名密码,还有页面的一个viewstate和获取的那个cookie一起提交给教务系统的一个验证页面。 就是不知如何用httpclient操作。
      

  4.   

    方式类似以下方式进行请求,你参考一下~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();        
          }
        }