再最近的項目中,遇到一個問題。就是注冊的時候,需要將服務器返回的手機驗證碼,再次發給服務器以驗證手機注冊是否成功。
但是始終無法將自己的驗證碼和服務器的驗證碼匹配成功
這時候,就需要我們去獲取服務器在返回給我們手機驗證碼中http header中的sessionid,將sessionid中的內容發給服務器,以去匹配服務器返回的sessionid值。
下面代碼就可以正確獲取sessionid值,並且保存下來。
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.apache.http.Header; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; public class HttpCookies { private static HashMap<String, String> CookieContiner = new HashMap<String, String>(); /** * 保存Cookie * * @param resp */ @SuppressWarnings("unused") public void SaveCookies(HttpResponse httpResponse) { Header[] headers = httpResponse.getHeaders("Set-Cookie"); String headerstr = headers.toString(); if (headers == null) { return; } else { for (int i = 0; i < headers.length; i++) { String cookie = headers[i].getValue(); String[] cookievalues = cookie.split(";"); for (int j = 0; j < cookievalues.length; j++) { String[] keyPair = cookievalues[j].split("="); String key = keyPair[0].trim(); String value = keyPair.length > 1 ? keyPair[1].trim() : ""; CookieContiner.put(key, value); } } } } /** * 增加Cookie * * @param request */ @SuppressWarnings("rawtypes") public void AddCookies(HttpGet request) { StringBuilder sb = new StringBuilder(); Iterator iter = CookieContiner.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); String key = entry.getKey().toString(); String val = entry.getValue().toString(); sb.append(key); sb.append("="); sb.append(val); sb.append(";"); } request.addHeader("cookie", sb.toString()); } }