ດຶງ HTML ຜ່ານພຣັອກຊີ ກ່ອນທີ່ຈະແຍກວິເຄາະດ້ວຍ Html Agility Pack
ລວມ HttpClient ທີ່ຕັ້ງຄ່າຜ່ານພຣັອກຊີ ກັບ Html Agility Pack ໂດຍແຍກຄວາມຜິດພາດຂອງເຄືອຂ່າຍອອກຈາກການແຍກວິເຄາະ HTML.
using var handler = new HttpClientHandler
{
UseProxy = true,
Proxy = new WebProxy("http://proxy.example:8080")
};
using var client = new HttpClient(handler);
string html = await client.GetStringAsync(
"https://www.example.com/catalog");
var document = new HtmlAgilityPack.HtmlDocument();
document.LoadHtml(html);ສ່ວນ .NET ທີ່ທັນສະໄໝນີ້ໃຊ້ System.Net ແລະ System.Net.Http. ລູກຄ້າທີ່ຕັ້ງຄ່າແລ້ວເປັນຜູ້ຈັດການເສັ້ນທາງເຄືອຂ່າຍ, ແລະ Html Agility Pack ໄດ້ຮັບສາຍອັກສອນ HTML ທີ່ສົ່ງກັບມາ. ຮັກສາລູກຄ້າທີ່ຕັ້ງຄ່າຢ່າງເໝາະສົມສຳລັບການເຮັດວຽກຕໍ່ເນື່ອງ ແທນການສ້າງສະລອຍຂອງມັນຄືນໃໝ່ສຳລັບທຸກໜ້າ.
ສຳລັບຕົວຢ່າງໜ້າສາທາລະນະນີ້, ຜູ້ສະໝັກທີ່ບໍ່ໄດ້ພິສູດຕົວຕົນຈາກ ລາຍຊື່ພຣັອກຊີ HTTP ສາມາດແທນຕົວກາງໄດ້. ແທນປາຍທາງແຍກຕ່າງຫາກ. URL ຂອງເວັບໄຊຮັກສາເອກະລັກ TLS ຂອງມັນ. ຂໍ້ມູນຮັບຮອງພຣັອກຊີທີ່ພິສູດແລ້ວເປັນຂອງ WebProxy; ທັງຂໍ້ມູນຮັບຮອງຂອງເວັບໄຊ ແລະ ການກວດສອບທີ່ປິດໄວ້ ບໍ່ໄດ້ແທນພວກມັນ.
GetStringAsync ຖືວ່າສະຖານະ HTTP ທີ່ບໍ່ສຳເລັດເປັນຄວາມຜິດພາດ. ຢ່າປ່ຽນການດາວໂຫລດທີ່ລົ້ມເຫລວໃຫ້ເປັນ HtmlDocument ຫວ່າງເປົ່າ. ຖ້າແອັບພລິເຄຊັນຕ້ອງການຫົວຂໍ້, ລາຍລະອຽດສະຖານະ ຫຼື ເນື້ອຄວາມຜິດພາດ, ໃຫ້ໃຊ້ການດຳເນີນການ HTTP ທີ່ມຸ່ງໄປຫາການຕອບສະໜອງ ແລະ ກວດສອບມັນກ່ອນການແຍກວິເຄາະ.
ວິທີການສາຍອັກສອນຫຼີກລ່ຽງການແປງ UTF-8 ເພີ່ມເຕີມແບບບໍ່ມີເງື່ອນໄຂຂອງໄບຕ໌ດິບ. ຖ້າທ່ານດຶງໄບຕ໌ໂດຍເຈດຕະນາ, ໃຫ້ຖ່າຍທອດຂໍ້ກຳນົດການເຂົ້າລະຫັດຂອງການຕອບສະໜອງ ແລະ ເອກະສານໄປສູ່ການຖອດລະຫັດ.
LoadHtml ສ້າງເອກະສານທີ່ແຍກວິເຄາະແລ້ວ; ມັນບໍ່ປະຕິບັດສະຄຣິບ, ບໍ່ໂຫຼດຮູບແບບ ຫຼື ຕິດຕາມລິ້ງ. ແກ້ໄຂລິ້ງພີ້ມຕິດກັນໂດຍອີງໃສ່ຕຳແໜ່ງຂອງການຕອບສະໜອງ, ແລະ ຈື່ວ່າອົງປະກອບທີ່ບຣາວເຊີສະແດງອາດບໍ່ມີຢູ່ໃນແຫຼ່ງທີ່ດາວໂຫລດມາ. ແຕ່ລະການຕອບສະໜອງຄວນສ້າງເອກະສານຂອງຕົນເອງ ເຖິງແມ່ນວ່າຄຳຮ້ອງຈະແບ່ງປັນລູກຄ້າ HTTP ທີ່ຕັ້ງຄ່າດຽວກັນກໍຕາມ.