我们有一个Android应用程序,要求用户输入对验证码的答案。 验证码在我们的服务器上生成。 当答复时,它被发送到服务器进行验证。重复使用HttpURLConnection以保持会话活跃
问题是,因为我必须在验证码请求后关闭HttpURLConnection,我才发现答复正在服务器上的不同会话中运行。 因为这个,验证码检查失败,因为它依赖于会话。
有没有办法保持连接活着或我应该遵循不同的路径? 我知道,在相当于iPhone的应用程序,他们仍然“连接”,因此具有相同的sessionid。
编辑:
CookieManager cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager);
URL urlObj = new URL(urlPath);
conn = (HttpURLConnection) urlObj.openConnection();
if (urlPath.toLowerCase().startsWith("https:")) {
initializeHttpsConnection((HttpsURLConnection) conn);
}
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Language", "en-US");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", Integer.toString(bodyData.length));
if (_sessionIdCookie != null) {
conn.setRequestProperty("Cookie", _sessionIdCookie);
}
// Connect
conn.setDoInput(true);
conn.setDoOutput(true);
conn.connect();
一旦我定义了“CookieManager”,然后我添加一个持有sessionid? – theblitz
好的,我对你有一个重要的问题:你使用API 9+(2.3+)吗?如果是的话,你只需在连接之前添加,你应该没问题。如果您使用的是2.2或更低版本,则应该使用org.apache包中的HttpClient。如果你在做2.2,我会添加一些示例代码。 – DallaRosa
目前它被设置为2.3,但不确定我们将如何离开它。可能会将其降到2.2以下,但不确定。似乎这里有99%的设备是2.3+,所以应该没问题。 – theblitz