用了HttpClient登陆服务器端(通过URL返回Json),并顺利通过验证成功
安卓客户端进入了系统,但是在访问服务器资源(Post或get)是,却又遇到了服务器重新需要验证
“没有权限”,改怎样让服务器打算记住,我通过URL已经验证过了,不需要重新验证就可以直接取得数据。
比较着急,找不到问题所在。请各位大侠请教,高分相送

解决方案 »

  1.   

    老火,都没有人回答,我今天才接触android的,希望大家互相交流
      

  2.   

    做个cookie 放到httphead里 然后验证一下。
      

  3.   

    如果你不是socket,那么你要明确一点,验证是实时的。包括oauth认证在内貌似都是一样。那么接下来就是安全性和效率的问题了几个方案供参考:
    1.登陆成功后返回客户端一个令牌(你自己定义类似身份证明的东西),服务端同时将这个令牌存放在cookie或session中,客户端进入系统后再获取数据就靠令牌去获取,如果令牌对就返回数据。这样可以避免服务端与数据库的交互次数,提高效率,但是要做好服务端的安全性工作,因为你的身份数据有可能是放在cookie中的2.每次获取数据都将用户名和密码提交给服务端验证一下。但是密码除了第一次登录是用户输入的原始密码外,最好后面都用加密过后的密码登录和获取数据
      

  4.   

    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestProperty("添加的键", 添加的值);
    验证通过后每一次的访问带过去一个可以验证成功的码,每次访问的时候进行验证一下就可以了
      

  5.   

    每次提交数据都提交提交了Cookie
    private static final String USER_AGENT=xxxandroid/1.0(compatible;xxxandroidclient 1.0;android 2.2;)";
    public byte[] getBytesByPost(String url,List<NameValuePair> paramsList) throws IllegalStateException, IOException{

            HttpParams params = new BasicHttpParams();
            DefaultHttpClient client = new DefaultHttpClient(params);
            HttpPost post = new HttpPost(url);
            String strCook=getCookieString();
            post.setHeader("Cookie", strCook);
            post.setHeader("User-Agent", USER_AGENT);
            HttpResponse response = null;
            post.setEntity(new UrlEncodedFormEntity(paramsList));
            response = client.execute(post);
            resetCookie(client.getCookieStore().getCookies());
            InputStream is = response.getEntity().getContent();
            System.out.println("ByPost:getBytesByPost");
            return Utility.streamToBytes(is);
    }
    上面是我们提交数据时的方法,请大家指点。
    各位有没有这方面的源码,参考一下哈,谢谢了