का उपयोग कर परिपत्र रीडायरेक्ट से बचें HttpClient 4.1.1 का उपयोग करके परिपत्र पुनर्निर्देशन से कैसे बच सकता हूं। मैं इस तरह त्रुटि हो रही है के रूप में: -HttpClient 4.1.1
executing requestGET http://home.somehost.com/Mynet/pages/cHome.xhtml HTTP/1.1
org.apache.http.client.ClientProtocolException
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:822)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
at edu.uci.ics.crawler4j.url.WebURL.setURL(WebURL.java:122)
at edu.uci.ics.crawler4j.crawler.CrawlController.addSeed(CrawlController.java:207)
at edu.uci.ics.crawler4j.example.advanced.Controller.main(Controller.java:31)
Caused by: org.apache.http.client.CircularRedirectException: Circular redirect to 'http://home.somehost.com/Mynet/pages/Home.xhtml'
at org.apache.http.impl.client.DefaultRedirectStrategy.getLocationURI(DefaultRedirectStrategy.java:168)
at org.apache.http.impl.client.DefaultRedirectStrategy.getRedirect(DefaultRedirectStrategy.java:193)
at org.apache.http.impl.client.DefaultRequestDirector.handleResponse(DefaultRequestDirector.java:1021)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:482)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
यह मेरा कोड ...
DefaultHttpClient client = null;
try
{
// Set url
//URI uri = new URI(url.toString());
client = new DefaultHttpClient();
client.getCredentialsProvider().setCredentials(
new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM),
new UsernamePasswordCredentials("test", "test"));
URL url1 = new URL (url);
HttpURLConnection connection = (HttpURLConnection) url1.openConnection();
connection.setFollowRedirects(false);
HttpGet request = new HttpGet(url);
final HttpParams params = new BasicHttpParams();
HttpClientParams.setRedirecting(params, false);
HttpContext context = new BasicHttpContext();
System.out.println("----------------------------------------");
System.out.println("executing request" + request.getRequestLine());
HttpResponse response = client.execute(request, context);
HttpEntity entity = response.getEntity();
System.out.println(response.getStatusLine());
InputStream content = entity.getContent();
BufferedReader in =
new BufferedReader (new InputStreamReader (content));
String line;
while ((line = in.readLine()) != null) {
// System.out.println(line);
}
} catch(Exception e) {
e.printStackTrace();
}
क्या आप वाकई यह बच सकते हैं? यदि वास्तव में एक गोलाकार पुनर्निर्देशन है, तो अपवाद फेंकना यह इंगित करने के लिए एक उचित तरीका है। – nos
@nos पीछे जवाब देने के लिए धन्यवाद .. मुझे परिपत्र पुनर्निर्देशन के लिए एक ही यूआरएल वापस मिल रहा है। लेकिन अगर मैं ब्राउज़र पर उस यूआरएल टाइप करता हूं तो मुझे उसी यूआरएल के साथ सर्वर से तीन प्रतिक्रिया मिलती है। पहले 302 मंद गति है। दूसरा 302 पाया गया है, तीसरा 200 ठीक है .. उसी यूआरएल के साथ ... और मैं इस यूआरएल की सामग्री को पकड़ना चाहता हूं। – ferhan