Android HttpURLConnection Cookie
Cookie 只是 Session 机制的一种常用形式,我们也可以使用其它方式来作为客户端的一个唯一标识, 这个由服务器决定,唯一能够证明一个客户端标识就好
除了这种方式外,我们还可以使用 URL 重写方法来实现,所以以后别傻傻的跟别人说:Session 不就是 Cookie
HTTP 登录请求的一个简单过程
一般是登陆的时候:服务器通过 Set-Cookie
响应头,返回一个 Cookie
,浏览器默认保存这个 Cookie
后续访问相关页面的时候会带上这个 Cookie
,通过 Cookie
请求头来完成访问
如果没 Cookie
或者 Cookie
过期,就提示用户没登陆,登陆超时,访问需要登陆之类的信息
我们使用 HttpClient
或 HttpURLConnection
也可以模拟这个过程
登陆后获取 Cookie
conn.getHeaderField("Set-Cookie");
请求时带上 Cookie
conn.setRequestProperty("Cookie",cookie);
URL重写
当然了,除了上面这种设置方式外,又可以使用 URL
重写的办法
GET 请求
如果是 GET
请求,可以直接把参数附加在 URL
后面,诸如 &sessionid=xxxxx
POST 请求
而 POST
请求必须这么做
HttpPut httpPut = new HttpPut(PUTACKCODE_URL); httpPut.setHeader("Content-Type","application/json;charset=UTF-8"); List<NameValuePair> params = new ArrayList<NameValuePair> params.add(new BasicNameValuePair("activation_code",actCode)); params.add(new BasicNameValuePair("session",new JSONObject().put("id",cookie).toString())); entity.setContentType("application/json"); httpPut.setEntity( entity ); HttpResponse course_response = new DefaultHttpClient().execute(httpPut);
上面的代码我们使用的是 JSON 格式,服务器在接到请求后取出里面的 session