http://www.im286.com/viewthread.php?tid=1550010&extra=page%3d1
ที่จริงแล้วปัญหานี้ได้รับการหารือกัน n ครั้ง
Care4 ได้รับการกล่าวถึงสองครั้งดังนั้นหากคุณมีปัญหาใด ๆ คุณควรค้นหาก่อนอาจมีคนแก้ไขปัญหาได้
http://www.im286.com/viewthread ... ; ไฮไลต์ =%2bcare4
http://www.im286.com/viewthread ... ; ไฮไลต์ =%2bcare4
ข้อเสียเล็กน้อยของรหัสของ Care4 คือต้องใช้ส่วนประกอบ
อย่างแรกคือ. NET Component 2 แต่ก็ไม่สะดวกที่จะใช้ส่วนประกอบ มีวิธีใดบ้างที่จะได้รับ ASP โดยตรง?
มีคำตอบ
ฉันเขียนรหัส Winsock VB Simple เพื่อรับ
http://www.im286.com/viewthread ... t = response.redirect
ในเวลานั้นฉันบอกว่าฉันไม่สามารถรับ ASP ได้เพราะฉันไม่ได้ไป CSSDN ในเวลานั้นและตอนนี้ฉันทำเสร็จแล้ว
ก่อนอื่นเราต้องเข้าใจว่าทำไมส่วนประกอบ XMLHTTP ไม่สามารถรับที่อยู่กระโดดดังกล่าวได้
ใช้การตอบสนองการตัดทอนเพื่อกระโดดและ PHP เป็นส่วนหัว ("ตำแหน่ง", $ url);
หลักการของทั้งสองวิธีเหมือนกันซึ่งคือการเพิ่มฟิลด์ตำแหน่งลงในส่วนหัว HTTP เอาท์พุท
ในเวลาเดียวกันตั้งค่าสถานะสถานะ HTTP ที่ส่งคืนเป็น 302 และเบราว์เซอร์จะพิจารณาว่าหน้าที่ร้องขอในปัจจุบันได้รับ
ย้ายไปยังเส้นทางที่ระบุโดยสถานที่
เหตุใด XMLHTTP จึงไม่สามารถรับได้?
เหตุผลนั้นง่ายมาก
ส่วนประกอบ XMLHTTP นั้นฉลาดเกินไปเมื่อประมวลผลข้อความ 302 ข้อความที่มีส่วนหัวของตำแหน่งดังนั้นมันจึงกระโดดโดยตรงไปยังหน้าสุดท้ายซึ่งหมายความว่าเราไม่เห็นกระบวนการระดับกลาง! บิลฉลาด!
โชคดีที่ MSXML4 ให้ส่วนประกอบใหม่ที่มีอยู่: winhttp.winhttpRequest.5.1 ซึ่งเป็นแกนกลางของส่วนประกอบ MSXML4 XMLHTTT winhttp.winhttprequest มีคุณสมบัติที่สำคัญมาก: ตัวเลือก ดัชนีที่หกของคุณสมบัตินี้ระบุว่าจะกระโดดโดยอัตโนมัติหรือไม่ จากนั้นคุณสามารถใช้วิธีการ GetResponseHeader และ GetAllResponseHeaders ขององค์ประกอบ XMLHTTP เพื่อรับข้อมูลส่วนหัว HTTP ที่ส่งคืน
โอเคดูรหัสต่อไป
สลัว ohttp
ตั้งค่า ohttp = server.createObject ("winhttp.winhttprequest.5.1"
Ohttp.option (6) = 0 'การเปลี่ยนเส้นทางอัตโนมัติเป็นสิ่งต้องห้ามสิ่งที่สำคัญที่สุดคือการอ่านข้อมูลเพียงแค่คาดว่าทุกคนจะทำ
ohttp.settimeouts 5000,5000,30000,5000'Set timeout ~ เหมือนกับ serverxmlhttp ส่วนประกอบ
ohttp.open "get", surl, false 'url เปิด url ในโหมดซิงโครนัส
ถ้า ohttp.status <> 200 และ ohttp.status <> 302 แล้ว
'OHTTP.STATUS สอดคล้องกับสถานะ HTTP ที่ส่งคืน ถ้าเป็น 200 หมายความว่านี่เป็นหน้าสุดท้ายและไม่มีการกระโดดตำแหน่ง
'ถ้าเป็น 302 หมายความว่า URL ของคำขอปัจจุบันได้ถูกย้ายและจำเป็นต้องเปลี่ยนเส้นทางตามส่วนหัว HTTP
'โดยทั่วไปเราไม่ได้จัดการกับสถานะที่มีค่าตัวเลขอื่น ๆ แต่คุณสามารถจัดการกับพวกเขาเช่น 440 หรือรัฐอื่น ๆ ด้วยตัวเอง!
อื่น
'ส่วนหัว HTTP ที่ส่งคืนและเนื้อหาเอกสารจะถูกประมวลผลที่นี่
สิ้นสุดถ้า
รหัสที่สมบูรณ์นั้นยาวขึ้น
ฉันส่งมันไปยังพื้นที่เพื่อดูด้วยตัวเอง
http://test.aymtv.com/url.asp
รหัสในแถบอินพุตเริ่มต้นคือที่อยู่ดาวน์โหลดของ CRSKY คุณสามารถทดสอบและรู้ได้
คลิกเพื่อดูซอร์สโค้ดเพื่อดูซอร์สโค้ดของไฟล์ ASP นี้!
ทุกอย่างเสร็จสิ้น ไปที่ CSDN ต่อไปและปะปนกัน
รหัสสมบูรณ์: