के लिए के लिए लॉग इन करने की जरूरत मैं किसी Android ऐप्लिकेशन में HttpClient
4.1 उपयोग कर रहा हूँ और यह मेरे ऐप की एपीआई उन में से एक के द्वारा रोका अनुरोध होने के बारे में स्मार्ट बनाने की कोशिश कर संभाल स्क्रीन "लॉगिन या वाईफाई के लिए भुगतान करने की जरूरत है"।का पता लगाने और वाईफाई
मैं उपयोगकर्ता को लॉगिन करने की अनुमति देने वाला एक वेबदृश्य पॉप अप करना चाहता हूं।
मैं httpclient में रीडायरेक्ट अवरोधन करने की कोशिश कर रहा है, लेकिन मैं असफल रहा हूँ।
this.client = new DefaultHttpClient(connectionManager, params);
((DefaultHttpClient) this.client).setRedirectStrategy(new DefaultRedirectStrategy() {
public boolean isRedirected(HttpRequest request, HttpResponse response, HttpContext context) {
boolean isRedirect = Boolean.FALSE;
try {
isRedirect = super.isRedirected(request, response, context);
} catch (ProtocolException e) {
Log.e(TAG, "Failed to run isRedirected", e);
}
if (!isRedirect) {
int responseCode = response.getStatusLine().getStatusCode();
if (responseCode == 301 || responseCode == 302) {
throw new WifiLoginNeeded();
// The "real implementation" should return true here..
}
} else {
throw new WifiLoginNeeded();
}
return isRedirect;
}
});
और फिर मेरी गतिविधि में:
यह मैं वर्तमान में क्या कोशिश कर रहा हूँ है
try {
response = httpClient.get(url);
} catch (WifiLoginNeeded e){
showWifiLoginScreen();
}
जहां शो वाईफाई स्क्रीन करता है:
Uri uri = Uri.parse("http://our-site.com/wifi-login");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
सोच यह है:
- मेरे एपीआई वैध तरीके से अनुप्रेषित कभी नहीं होगा
- तो मैं कॉन्फ़िगर HttpClient मेरी विशेष RuntimeException फेंकने के लिए जब यह
- पकड़ने कि गतिविधि कोड में अपवाद है और एक वेब-दृश्य पॉप उन्हें मिल लॉगिन स्क्रीन
- एक बार जब वे करने के लिए निर्देशित निर्देशित कर दिये है लॉगिन, वाईफाई-लॉगिन उन्हें अच्छी तरह से काम पर बधाई देता है और उन्हें एप
बात यह है कि, मुझे कभी भी वाईफाई लॉग इन नहीं किया गया अपवाद। एंड्रॉइड के साथ इसे पूरा करने का पसंदीदा तरीका क्या है?
सबसे पहले, सुनिश्चित करें कि आपका http सर्वर सही httpReponse (301 या 302) देता है। – yorkw
बात यह है कि यह मेरा सर्वर रीडायरेक्ट नहीं कर रहा है। यह उन वाईफाई एक्सेस पॉइंट्स में से एक है जो सब कुछ "हमारे महंगे वाईफाई में लॉग इन करें" पृष्ठों को इंगित करता है। इसलिए मुझे हर मामले को पकड़ने की जरूरत है जिसे हम पुनर्निर्देशित HTTP कॉल के बारे में सोच सकते हैं। –
यह आपके द्वारा अपेक्षित रीडायरेक्ट का प्रकार भी नहीं हो सकता है - यह भी सुनिश्चित करें कि आपके द्वारा अपेक्षित कोड उत्पन्न किए जा रहे हैं। एक्सेस पॉइंट को आपके द्वारा अपेक्षित विशेष HTTP कोड को वापस करने की आवश्यकता नहीं है और यह खुशी से एक [200] भेज सकता है जो आपको इंगित करता है कि आप उन्हें एक्सेस पॉइंट लॉगिन स्क्रीन पर निर्देशित करते समय ठीक हैं। आप अपनी साइट के आईपी पते को स्टोर करना चाहते हैं और नवीनतम http अनुरोध द्वारा आईपी पते पर इसकी तुलना करना चाहते हैं। यदि वे अलग हैं, तो लॉगिन स्क्रीन को कॉल करें। – RightHandedMonkey