再最近的项目中,遇到一个问题。就是注册的时候,需要将服务器返回的手机验证码,再次发给服务器以验证手机注册是否成功。
但是始终无法将自己的验证码和服务器的验证码匹配成功
这时候,就需要我们去获取服务器在返回给我们手机验证码中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()); } }