การอัปโหลดที่ลองใหม่หลังการท้าทายจากพร็อกซีต้องใช้เนื้อหาอีกครั้ง สำหรับตัวเชื่อม Apache ของ Jersey 2 ให้เลือกการประมวลผลเอนทิตีแบบบัฟเฟอร์ในการกำหนดค่าที่ใช้สร้างไคลเอนต์นั้น:

ClientConfig config = new ClientConfig();
config.connectorProvider(new ApacheConnectorProvider());
config.property(ClientProperties.PROXY_URI,
                "http://proxy.example.net:8080");
config.property(ClientProperties.REQUEST_ENTITY_PROCESSING,
                RequestEntityProcessing.BUFFERED);

ดำเนินการอัปโหลดผ่านไคลเอนต์ที่ได้ ประเภทเหล่านี้มาจากแพ็กเกจ Jersey client และ Apache-connector การตั้งค่าคอนฟิกที่ไม่ได้ใช้จะไม่ส่งผลต่อคำขอ

ตัวเชื่อมจะห่อเอนทิตีแบบบัฟเฟอร์ไว้ใน BufferedHttpEntity ของ Apache เอนทิตีแบบสตรีมที่ไม่ได้บัฟเฟอร์ไม่สามารถทำซ้ำได้ การบัฟเฟอร์ให้ไบต์แก่ลำดับการยืนยันตัวตนที่ส่งซ้ำได้แทนการอ่านผู้ผลิตที่ใช้ไปแล้วใหม่

สิ่งนี้ไม่รับประกันว่าการยืนยันตัวตนจะสิ้นสุดหลัง 407 เพียงครั้งเดียว บางรูปแบบจำเป็นต้องแลกเปลี่ยนหลายรอบโดยชอบด้วยกฎหมาย ดังนั้นตรวจสอบการเจรจาทั้งหมดก่อนถือว่าการท้าทายอีกรอบเป็นสถานะที่สูญเสีย

รักษาขนาดเนื้อหาให้อยู่ในงบหน่วยความจำ การอัปโหลดแบบสตรีมขนาดใหญ่ต้องใช้กลยุทธ์การเล่นซ้ำที่เหมาะกับภาระงานนั้น; การเปิดบัฟเฟอร์สำหรับทุกคำขออาจแลกความล้มเหลวของการเจรจากับหน่วยความจำหมด

บทความที่เกี่ยวข้อง