ROME Feeds: วางพร็อกซีไว้ที่ไคลเอนต์ HTTP
ให้ไคลเอนต์ HTTP ดูแลการกำหนดเส้นทางพร็อกซีและการจัดการสถานะ แล้วส่งสตรีมและชนิดเนื้อหาไปยังตัวอ่าน XML ของ ROME
ROME แยกวิเคราะห์ไบต์ของฟีด แต่เส้นทางพร็อกซีและบัญชีควรเป็นของไคลเอนต์ HTTP สำหรับ JDK HttpClient ที่เลือก พร็อกซีแบบคงที่จะอยู่บน builder ของมัน:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.build();
สำหรับการทดสอบฟีดสาธารณะที่ได้รับอนุญาตโดยไม่มีการยืนยันตัวตนพร็อกซี ให้แทนที่โฮสต์และพอร์ตตัวอย่างด้วยผู้สมัครจากรายการพร็อกซี HTTP เพิ่มการยืนยันตัวตนของการติดตั้งและขีดจำกัดคำขอให้กับไคลเอนต์นั้น เมื่อได้การตอบสนองที่ยอมรับได้แล้ว ให้ส่งสตรีมให้ ROME:
try (XmlReader reader = new XmlReader(body, contentType)) {
SyndFeed feed = new SyndFeedInput().build(reader);
}
import สมัยใหม่คือ com.rometools.rome.io.XmlReader และ SyndFeedInput ที่นี่ body คือ InputStream ที่ได้รับ และ contentType คือ HTTP Content-Type XmlReader พิจารณา BOM เมทาดาทาเหล่านั้น และการประกาศ XML การถอดรหัสด้วย charset ใดก็ได้ก่อนอาจทิ้งหลักฐานที่เป็นประโยชน์
ตรวจสอบสถานะ HTTP ก่อนแยกวิเคราะห์ มิฉะนั้นหน้าล็อกอินพร็อกซีหรือการปฏิเสธอาจปรากฏเป็นข้อผิดพลาด XML ปล่อย body สำหรับการตอบสนองที่ถูกปฏิเสธด้วย เพื่อไม่ให้ข้อผิดพลาด HTTP ทิ้งสตรีมไว้เปิด
แหล่งฟีดสองแหล่งสามารถใช้ไคลเอนต์ที่กำหนดค่าแตกต่างกันได้โดยไม่ต้องเปลี่ยนพร็อพเพอร์ตี้พร็อกซีของ JVM ระหว่างการเรียกใช้ ไคลเอนต์ HTTP แต่ละตัวเป็นเจ้าของเส้นทางของตน ขณะที่ ROME เป็นเจ้าของขั้นตอนการแยกวิเคราะห์