㈠ android 连接Http的时候有session吗
当Android应用程序访问WEB服务器的时候,我们为了与服务器保持同一会话,也就是说当前登录用户与服务器的交互是在同一个SessionId下。当我们登录成功的时候,可以通过HTTP请求获取到Cookie信息,其中包括会话的SessionId,同时也可以自己将SessionId放入Json中返回。Session我们可以用一个静态变量来存放,每次向服务器发送请求的时候将SessionId带过去,服务器会自动检验这个SessionId有没有失效。DefaultHttpClient httpclient = new DefaultHttpClient();HttpPost httpPost = new HttpPost(访问地址);httpPost.setHeader("Cookie", "JSESSIONID=" + 我们在静态变量里存放的SessionId);HttpResponse httpResponse = httpclient.execute(httpPost);这样就可以将SessionId带过去了。
㈡ 手机android 和php 通信时候,怎么存session
// 定义HttpClient
HttpClient client = new DefaultHttpClient();
HttpClientParams.setCookiePolicy(client.getParams(),
CookiePolicy.BROWSER_COMPATIBILITY);
// 实例化http方法
HttpPost request = new HttpPost(SYRG.HTTP+"/site/login");
request.addHeader("X-Requested-With", "XMLHttpRequest");
// 创建名/值组列表
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("LoginForm[username]", username));
params.add(new BasicNameValuePair("LoginForm[password]", pwd));
params.add(new BasicNameValuePair("android", "true"));
// 创建UrlEncodedFormEntity对象
UrlEncodedFormEntity formEntiry;
try {
formEntiry = new UrlEncodedFormEntity(params);
request.setEntity(formEntiry);
// 执行请求
HttpResponse response = client.execute(request);
// 读取cookie并保存文件
SYRG.cookies = ((AbstractHttpClient) client).getCookieStore()
.getCookies();
String strcookies = SYRG.cookies.get(0).getName().toString() + "=" + SYRG.cookies.get(0).getValue().toString();
System.out.println("登陆的cookies="+strcookies);
HttpEntity entity = response.getEntity();
if (entity != null) {
BufferedReader read = new BufferedReader(new InputStreamReader(
entity.getContent()));
result = read.readLine();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
把这个cookie以addhear的形式传给后台,你可以保存到本地,然后下次用的时候直接读取本地的文件
㈢ android与WEB服务器交互时,如何保证在同一个会话Session中通信
最近在开发项目的过程中,遇到android与web服务器要在同一session下通信的问题。在解决问题前先回顾下Session与Cookie:Cookie和Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决HTTP无状态的问题而所做的努力。Session可以用Cookie来实现,也可以用URL回写的机制来实现。Cookie和Session有以下明显的不同点:1)Cookie将状态保存在客户端,Session将状态保存在服务器端;2)Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。网络服务器用HTTP头向客户端发送cookies,在客户终端,浏览器解析这些cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求缚上这些cookies。3)Session是针对每一个用户的,变量的值保存在服务器上,用一个sessionID来区分是不同用户session变量,这个值是通过用户的浏览器在访问的时候返回给服务器,当客户禁用cookie时,这个值也可能设置为由get来返回给服务器;4)就安全性来说:当你访问一个使用session 的站点,同时在自己机器上建立一个cookie,建议在服务器端的SESSION机制更安全些.因为它不会任意读取客户存储的信息。Session机制Session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为 session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个 session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个 session id将被在本次响应中返回给客户端保存。Session的实现方式1) 使用Cookie来实现服务器给每个Session分配一个唯一的JSESSIONID,并通过Cookie发送给客户端。当客户端发起新的请求的时候,将在Cookie头中携带这个JSESSIONID。这样服务器能够找到这个客户端对应的Session。2 )使用URL回显来实现URL回写是指服务器在发送给浏览器页面的所有链接中都携带JSESSIONID的参数,这样客户端点击任何一个链接都会把JSESSIONID带给服务器。 如果直接在浏览器中输入url来请求资源,Session是匹配不到的。Tomcat对 Session的实现,是一开始同时使用Cookie和URL回写机制,如果发现客户端支持Cookie,就继续使用Cookie,停止使用URL回写。如果发现Cookie被禁用,就一直使用URL回写。jsp开发处理到Session的时候,对页面中的链接记得使用 response.encodeURL() 。回顾完Session和Cookie,我们来说说为什么手机端与服务器交互没有实现在同一session下?1)原因很简单,就是因为android手机端在访问web服务器时,没有给http请求头部设置sessionID,而使用web浏览器作为客户端访问服务器时,在客户端每次发起请求的时候,都会将交互中的sessionID:JSESSIONID设置在Cookie头中携带过去,服务器根据这个sessionID获取对应的Session,而不是重新创建一个新Session(除了这个Session失效)。以java.net.HttpURLConnection发起请求为例:获取Cookie: URL url = new URL(requrl); HttpURLConnection con= (HttpURLConnection) url.openConnection(); // 取得sessionid. String cookieval = con.getHeaderField("set-cookie"); String sessionid; if(cookieval != null) { sessionid = cookieval.substring(0, cookieval.indexOf(";")); } //sessionid值格式:JSESSIONID=,是键值对,不是单指值发送设置cookie: URL url = new URL(requrl); HttpURLConnectioncon= (HttpURLConnection) url.openConnection();
㈣ Android 客户端 与java web服务器端 session问题
为什么非要web端和客户端同一个对象呢?你客户端修改密码,应该给你发送命令,里面包含客户端设置里面的旧密码,和新密码。你在web端接收到后,比较旧密码和你session对象里面的密码是否一致,是的话执行session.setpassword("新密码");不一样则,回复客户端,原始密码输入错误。这个逻辑才是对的,服务端和客户端要分离开,独立性原则。尽量不要用相同对象,如果你用一样的,那么客户端开源直接修改服务端session里面的所有数据。这样的程序谁敢用?
㈤ android 用httpclient登录无法保持会话状态 最后两次请求的cookie都不一样!我明明设成一样了
loginResult = EntityUtils.toString(loginResponse.getEntity(), "utf-8");
得判断是否真成功了。 另外服务器送来的cookie是否一样,那要看服务器送什么回来。现在这样单方面调试,很费劲的
㈥ 安卓与服务器之间的session机制一般是怎么实现的
Cookie和Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决HTTP无状态的问题而所做的努力。
Session可以用Cookie来实现,也可以用URL回写的机制来实现。
Cookie和Session有以下明显的不同点:
1)Cookie将状态保存在客户端,Session将状态保存在服务器端;
2)Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。网络服务器用HTTP头向客户端发送cookies,在客户终端,浏览器解析这些cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求缚上这些cookies。
3)Session是针对每一个用户的,变量的值保存在服务器上,用一个sessionID来区分是不同用户session变量,这个值是通过用户的浏览器在访问的时候返回给服务器,当客户禁用cookie时,这个值也可能设置为由get来返回给服务器;
4)就安全性来说:当你访问一个使用session 的站点,同时在自己机器上建立一个cookie,建议在服务器端的SESSION机制更安全些.因为它不会任意读取客户存储的信息。
㈦ android session 保持问题
你将session 保存在手机端,可以一直保存,可以定期清除,android sharedpreferences 去谷歌
㈧ android 有session吗
没有session 当时有类似session 的类