Chúng tôi có một ứng dụng Android yêu cầu người dùng nhập câu trả lời vào hình ảnh xác thực. Captcha được tạo trên máy chủ của chúng tôi. Khi trả lời, nó được gửi đến máy chủ để xác minh.Sử dụng lại HttpURLConnection để giữ phiên còn sống
Vấn đề là vì tôi phải đóng HttpURLConnection sau khi yêu cầu Captcha, tôi thấy rằng câu trả lời đang chạy trên một phiên khác trên máy chủ. Bởi vì điều này Captcha kiểm tra thất bại vì nó phụ thuộc phiên.
Có cách nào để giữ kết nối luôn hoạt động hoặc tôi có nên theo một con đường khác không? Tôi biết rằng trong ứng dụng iPhone tương đương, chúng vẫn được "kết nối" và do đó có cùng sessionid.
Edit:
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();
Sau khi tôi đã xác định "CookieManager" thì tôi có thêm một ứng dụng giữ sessionid không? – theblitz
Ok, tôi có một câu hỏi quan trọng đối với bạn: Bạn có đang sử dụng API 9+ (2.3+) không? Nếu có, bạn chỉ cần thêm rằng trước khi kết nối nó, bạn nên được ok. Nếu bạn đang sử dụng 2,2 hoặc ít hơn, bạn nên sử dụng HttpClient từ gói org.apache. Nếu bạn đang làm cho 2.2 tôi sẽ thêm một số mã ví dụ. – DallaRosa
Hiện tại nó được đặt thành 2.3 nhưng không chắc chắn chúng ta sẽ để nó như thế. Có thể thả nó xuống 2.2 nhưng không chắc chắn. Có vẻ như 99% các thiết bị ở đây là 2,3+ vì vậy nên được ok. – theblitz