انسخ رمز الكود كما يلي:
import org.Apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.Apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.entity.ContentType;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.ExecutionContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;
الطبقة العامة HttpClientDemo {
/**
* احصل على معلومات URL بعد إعادة التوجيه
* سيتعامل @see HttpClient تلقائيًا مع إعادة توجيه العميل بشكل افتراضي
* @see، أي أنه بعد الوصول إلى صفحة الويب A، بافتراض إعادة توجيهها إلى صفحة الويب B، فسيقوم HttpClient تلقائيًا بإرجاع محتوى صفحة الويب B.
* @see إذا كنت ترغب في الحصول على عنوان صفحة الويب B، فأنت بحاجة إلى استخدام كائن HttpContext الذي يستخدمه العميل بالفعل للحفاظ على معلومات الحالة في تفاعلات الطلب والاستجابة المتعددة.
* @see يمكننا أيضًا استخدام HttpContext لتخزين بعض المعلومات التي نحتاجها، حتى نتمكن من إخراج هذه المعلومات لاستخدامها أثناء الطلب التالي.
*/
الفراغ العام الثابت getRedirectInfo(){
HttpClient httpClient = new DefaultHttpClient();
HttpContext httpContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet("http://127.0.0.1:8088/blog/main.jsp");
يحاول {
// قم بتمرير كائن HttpContext كمعلمة إلى طريقة التنفيذ ()، ثم سيقوم HttpClient بتخزين معلومات الحالة أثناء عملية تفاعل استجابة الطلب في HttpContext
استجابة HttpResponse = httpClient.execute(httpGet, httpContext);
// احصل على معلومات عنوان المضيف بعد إعادة التوجيه، أي "http://127.0.0.1:8088"
HttpHost targetHost = (HttpHost)httpContext.getAttribute(ExecutionContext.HTTP_TARGET_HOST);
// احصل على URI لكائن الطلب الفعلي، وهو "/blog/admin/login.jsp" بعد إعادة التوجيه
HttpUriRequest realRequest = (HttpUriRequest)httpContext.getAttribute(ExecutionContext.HTTP_REQUEST);
System.out.println("عنوان المضيف:" + targetHost);
System.out.println("معلومات URI:" + realRequest.getURI());
كيان HttpEntity = Response.getEntity();
إذا (فارغة!= كيان){
System.out.println("محتوى الاستجابة:" + EntityUtils.toString(entity, ContentType.getOrDefault(entity).getCharset()));
EntityUtils.consume(entity);
}
} قبض (الاستثناء ه) {
printStackTrace();
}أخيراً{
httpClient.getConnectionManager().shutdown();
}
}
}