安卓HttpClient类针对PHP服务网络请求session身份验证
PHP服务身份验证通常使用Session功能。
第一次请求,请求头不包含cookie数据,在PHP返回消息之前,使用session_start() 函数,返回set-cookie数据中就会包含PHPSESSID(这个表示服务器端为这个session分配的一个cookie值),
如,返回cookie包括:Set-Cookie: PHPSESSID=7be0caefe3073d4075ac842d8df56be8; path=/; HttpOnly
这时将这个PHPSESSID字段值保存起来(无论是一个临时变量或是存储成文件)
第二次请求,将保存的PHPSESSID字段值设置为请求头的cookie的PHPSESSID值,那么第二次请求就可以使用第一次请求时服务端保存的session数据了。
如,请求cookie包括:PHPSESSID=7be0caefe3073d4075ac842d8df56be8
以下是HttpClient类使用Get方法如何设置管理cookie。
首先声明一个字符串型成员变量 String mSESSIONID=“”;用来保存临时cookie的PHPSESSID值。
String url = "http://1.vini.sinaapp.com/app/check.php?action=CheckCode&InputCode=" + inputCode; HttpGet httpGet = new HttpGet(url); DefaultHttpClient httpClient = new DefaultHttpClient(); try { // 如果mSESSIONID值存在,设置请求头的Cookie的Session字段 if("" != mSESSIONID){ httpGet.setHeader("Cookie", "PHPSESSID=" + mSESSIONID); } //执行连接 HttpResponse httpResponse = httpClient.execute(httpGet); //获取并保存Cookie的Session字段 CookieStore mCookieStore = httpClient.getCookieStore(); List<Cookie> cookies = mCookieStore.getCookies(); for (int i = 0; i < cookies.size(); i++) { if ("PHPSESSID".equals(cookies.get(i).getName())) { mSESSIONID = cookies.get(i).getValue(); break; } } //获取结果 if(httpResponse.getStatusLine().getStatusCode()==200){ return EntityUtils.toString(httpResponse.getEntity()); } else{ return String.valueOf(httpResponse.getStatusLine().getStatusCode()); } } catch (IOException e) { e.printStackTrace(); return e.getMessage(); }
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了