คัดลอกรหัสรหัสดังต่อไปนี้:
นำเข้า org.apache.http.HttpEntity;
นำเข้า org.apache.http.HttpHost;
นำเข้า org.apache.http.HttpResponse;
นำเข้า org.apache.http.client.HttpClient;
นำเข้า org.apache.http.client.methods.HttpGet;
นำเข้า org.apache.http.client.methods.HttpUriRequest;
นำเข้า org.apache.http.entity.ContentType;
นำเข้า org.apache.http.impl.client.DefaultHttpClient;
นำเข้า org.apache.http.protocol.BasicHttpContext;
นำเข้า org.apache.http.protocol.ExecutionContext;
นำเข้า org.apache.http.protocol.HttpContext;
นำเข้า org.apache.http.util.EntityUtils;
HttpClientDemo คลาสสาธารณะ {
-
* รับข้อมูล URL หลังจากเปลี่ยนเส้นทาง
* @see HttpClient จะจัดการการเปลี่ยนเส้นทางไคลเอ็นต์โดยอัตโนมัติตามค่าเริ่มต้น
* @เห็นว่าหลังจากเข้าถึงหน้าเว็บ A แล้ว สมมติว่ามันถูกเปลี่ยนเส้นทางไปยังหน้าเว็บ B ดังนั้น HttpClient จะส่งกลับเนื้อหาของหน้าเว็บ B โดยอัตโนมัติ
* @see หากคุณต้องการรับที่อยู่ของหน้าเว็บ B คุณต้องใช้วัตถุ HttpContext จริงๆ แล้วไคลเอ็นต์ใช้เพื่อรักษาข้อมูลสถานะในการโต้ตอบคำขอและการตอบกลับหลายครั้ง
* @see เรายังสามารถใช้ HttpContext เพื่อเก็บข้อมูลบางอย่างที่เราต้องการ เพื่อที่เราจะได้นำข้อมูลนี้ไปใช้ในระหว่างการร้องขอครั้งต่อไป
-
โมฆะคงสาธารณะ getRedirectInfo(){
HttpClient httpClient = DefaultHttpClient ใหม่ ();
HttpContext httpContext = BasicHttpContext ใหม่ ();
HttpGet httpGet = 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();
ถ้า (null != เอนทิตี){
System.out.println("เนื้อหาการตอบสนอง:" + EntityUtils.toString(เอนทิตี, ContentType.getOrDefault(เอนทิตี).getCharset()));
EntityUtils.consume (เอนทิตี);
-
} จับ (ข้อยกเว้นจ) {
e.printStackTrace();
}ในที่สุด{
httpClient.getConnectionManager().ปิดเครื่อง();
-
-
-