שלום..מצאתי תוכנית ברשת שאמורה להיכנס ל url כלשהו ולשמור אותו כ html אצלי במחשב.
התוכנית די קצרה ודי מובנה אך יש לי בעיה איתה.
בחלק מהאתרים כמו ynet וכו' הכל עובד די טוב.
בחלק מהאתרים כמו וואלה לדוגמא אני מקבל exception :
Unhandled Exception: System.Net.WebException: The server committed a protocol violation. Section=ResponseHeader Detail=Header name is invalid.
אבל זה לא קורה בכל מקום.
יש אתרים שאני מקבל שגיאה של
Unhandled Exception: System.Net.WebException: The remote server returned an error: (500) Internal Server Error.
שבאמת שאני לא מוצא סיבה שזה יקרה..אבל אני די חדש בדוט.נט ויכול להיות שאני לא מכר את הפונקציונליות שאני באמת צריך כאן.עכשיו יש את המקרה האחרון שהוא חיבור ל https שכשאר אני נכנס אליו בדפדפן אני מקבל HTML אחד וכאשר אני שומר לקובץ דרך הרצת התוכנית אני מקבל דף HTML שונה(אבל אני מקבל דף כלשהו).
אין לי מושג איך ולמה זה קורה...
כל מה שרציתי זה לבנות תוכנית קצרה שתדע להיכנס ללינק מסויים ולהחזיר את ה html של אותו לינק כ string או כקובץ..זה לא כזה חשוב לי איך.
למי שמכיר דרך פשוטה יותר או יודע מה הבעיה שלי כאן(הבעיה האחרונה שאני לא מקבל HTML זהה) אני אשמח לקבל עצות או דעות..אני באמת חדש בדוטנט ולא כל כך מכיר את האובייקטים הללו..
התוכנית שאיתה עשיתי את הכל היא כאן:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.IO; namespace temp { class Program { static void Main() { GetFile("http://www.walla.co.il", "c:\\temp\\walla.html"); } public static void GetFile(string strURL, string strFilePath) { WebRequest myWebRequest = WebRequest.Create(strURL); WebResponse myWebResponse = myWebRequest.GetResponse(); Stream ReceiveStream = myWebResponse.GetResponseStream(); Encoding encode = System.Text.Encoding.GetEncoding("Hebrew"); StreamReader readStream = new StreamReader(ReceiveStream, encode); string strResponse = readStream.ReadToEnd(); StreamWriter oSw = new StreamWriter(strFilePath); oSw.WriteLine(strResponse); oSw.Close(); readStream.Close(); myWebResponse.Close(); } } } תודה מראש!
|