से HttpClient 4 को रोकना I Apache HttpComponents लाइब्रेरी का उपयोग करके अपने ऐपइंजिन एप्लिकेशन से कनेक्ट कर रहा हूं। मेरे उपयोगकर्ताओं को प्रमाणीकृत करने के लिए, मुझे एप्लिकेशन के लॉगिन पते (http://myapp.appspot.com/_ah/login?auth=..) के साथ एक प्रमाणीकरण टोकन पास करने की आवश्यकता है और प्रतिक्रिया के शीर्षलेख से कुकी को पकड़ें। हालांकि, लॉगिन पृष्ठ रीडायरेक्ट स्टेटस कोड के साथ प्रतिक्रिया करता है, और मुझे नहीं पता कि एचटीपी क्लाइंट को रीडायरेक्ट का पालन करने से कैसे रोकें, इस प्रकार मुझे कुकी को अवरुद्ध करने से रोक दिया जाए।रीडायरेक्ट
Fwiw, अनुरोध भेजने के लिए उपयोग की जाने वाली वास्तविक विधि नीचे दी गई है।
private void execute(HttpClient client, HttpRequestBase method) {
// Set up an error handler
BasicHttpResponse errorResponse = new BasicHttpResponse(
new ProtocolVersion("HTTP_ERROR", 1, 1), 500, "ERROR");
try {
// Call HttpClient execute
client.execute(method, this.responseHandler);
} catch (Exception e) {
errorResponse.setReasonPhrase(e.getMessage());
try {
this.responseHandler.handleResponse(errorResponse);
} catch (Exception ex) {
// log and/or handle
}
}
}
मैं क्लाइंट को रीडायरेक्ट का पालन करने से कैसे रोकूं?
धन्यवाद।
अद्यतन:
नीचे समाधान के अनुसार, मैं एक DefaultHttpClient client
बनाने के बाद निम्नलिखित किया था (और यह execute
विधि को पार करने से पहले):
if (!this.followRedirect) {
client.setRedirectHandler(new RedirectHandler() {
public URI getLocationURI(HttpResponse response,
HttpContext context) throws ProtocolException {
return null;
}
public boolean isRedirectRequested(HttpResponse response,
HttpContext context) {
return false;
}
});
}
अधिक वर्बोज़ की तुलना में यह ऐसा लगता है होने की जरूरत है, लेकिन जैसा मैंने सोचा उतना मुश्किल नहीं है।
ध्यान दें कि एक बार जब आप एक RedirectHandler सेट करते हैं जो बाद के अनुरोधों के लिए प्रभावी रहता है - न केवल यहां ब्याज का अनुरोध।इसलिए यदि आप आगे के अनुरोध जारी करने जा रहे हैं जिसके लिए उचित रूप से निष्पादित करने के लिए पुनर्निर्देशन की आवश्यकता हो सकती है तो आप निष्पादन के बाद क्लाइंट.सेट रेडियोधर्मी हैंडलर (नया DefaultRedirectHandler()) करना चाहेंगे। – Torid