osc安卓版如何保持session的?? 400 报错
@红薯 你好,想跟你请教个问题:
HttClent官网上说,用同一个HttpClient向服务器端发送请求可以自动保持session,你们每次创建新的httpClient是如何保持session的呢?这么做有什么优点?
private static HttpClient getHttpClient() { HttpClient httpClient = new HttpClient(); // 设置 HttpClient 接收 Cookie,用与浏览器一样的策略 httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); // 设置 默认的超时重试处理策略 httpClient.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler()); // 设置 连接超时时间 httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(TIMEOUT_CONNECTION); // 设置 读数据超时时间 httpClient.getHttpConnectionManager().getParams().setSoTimeout(TIMEOUT_SOCKET); // 设置 字符集 httpClient.getParams().setContentCharset(UTF_8); return httpClient; }
private static GetMethod getHttpGet(String url, String cookie, String userAgent) { GetMethod httpGet = new GetMethod(url); // 设置 请求超时时间 httpGet.getParams().setSoTimeout(TIMEOUT_SOCKET); httpGet.setRequestHeader("Host", URLs.HOST); httpGet.setRequestHeader("Connection","Keep-Alive"); httpGet.setRequestHeader("Cookie", cookie); httpGet.setRequestHeader("User-Agent", userAgent); return httpGet; } private static PostMethod getHttpPost(String url, String cookie, String userAgent) { PostMethod httpPost = new PostMethod(url); // 设置 请求超时时间 httpPost.getParams().setSoTimeout(TIMEOUT_SOCKET); httpPost.setRequestHeader("Host", URLs.HOST); httpPost.setRequestHeader("Connection","Keep-Alive"); httpPost.setRequestHeader("Cookie", cookie); httpPost.setRequestHeader("User-Agent", userAgent); return httpPost; }
客户端没有使用保持session的策略,而是用的cookie,每次请求都是带上cookie的。
######回复 @迷途d书童 : 最近在学习REST,如果App的后台提供RESTful的API,是否可以解决这个问题呢?######这只是一个服务器端验证用户是否登录的一个策略而已,也没什么好处,而session在客户端上使用不太现实。######非常感谢,使用这种方式有什么好处呢?######学习版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。