שואל
כיצד לגשת לכתובת URL ולקבל את התוכן שמוחזר מהשרת

שאלה
-
כל התגובות
-
אהלן אמיר,
כתבתי לך תשובה לשלב הזה בשרשור הקודם :-)
תשובה בקצרה: בעזרת מחלקות webrequest וכן WebResponse
יש לך קישורים ותוספות בשרשור הקודם. אנא עבור על ההודעה הארוכה השלי שםאני שמח לראות שהבנת את הרעיון של שאלה ממוקדת וקצרה, אבל כאמור השאלה הזו כבר קיבלה תשובה מלאה.
* בכל מקרה אנא עבוד על שרשור פתוח אחד בכל פעם. כאשר אתה מקבל תשובה לשאלה ורוצה לעבור לשאלה נוספת. אל תשכח לסגור את השרשור הקודם תמיד לפני שפותחים שרשור נוסף
* סגירת שרשור נעשית על ידי סימון תשובה אחת או יותר שקיבלת (בעזרת הקישורים מתחת להודעות), בנוסף אפשר ומומלץ להצביע להודעות יעילות או נחמדות (כל הצבעה על הודעה נותנת למי שכתב אותה +5 נקודות דרך אגב), וכמובן לא לשכוח להודות למי שניסה לעזור ולכמובן למי שעזר (לדעתי צריך להודות גם למי שניסה ולא רק למי שנתן את התשובה הכי טובה)
Ronen Ariely
[Personal Site] [Blog] [Facebook] [Linkedin] -
-
היי, מה נשמע? :-).
קודם כל תודה רבה על העזרה, אני מעריך את זה מאוד!
שנית,
מצאתי את הקוד הזה אשר עושה שימוש במחלקה WebClient:
protected void
btnGetHTML_Click(object sender, EventArgs e)
{
// We'll use WebClient class for reading HTML of web page
WebClient MyWebClient = new WebClient();
// Read web page HTML to byte array
Byte[] PageHTMLBytes;
if (txtURL.Text != "")
{
PageHTMLBytes = MyWebClient.DownloadData(txtURL.Text);
// Convert result from byte array to string
// and display it in TextBox txtPageHTML
UTF8Encoding oUTF8 = new UTF8Encoding();
txtPageHTML.Text = oUTF8.GetString(PageHTMLBytes);
}
}הקוד נלקח מכאן:
http://www.beansoftware.com/ASP.NET-FAQ/Read-Page-HTML.as
px
אך בדוגמה שבקישור נראה שעובד ואצלי לא ואני לא יודע למה...
יש למישהו רעיון?
amir tuchner
-
ערב טוב אמיר
אם עברנו לבצע את הדיון בשרשור הנוכחי אז אנה סגור את השרשור הקודם.
הרעיון הוא שבכל רגע לא יהיה לך יותר משרשור אחד פתוח באותו פורום. כמו שהזכרתי כבר, אנחנו עובדים על בעיה אחרי בעיה = שירשור אחרי שירשור>> קודם כל תודה רבה על העזרה, אני מעריך את זה מאוד!
בבקשה :-)
>> אך בדוגמה שבקישור נראה שעובד ואצלי לא ואני לא יודע למה...
איך מישהו יכול לדעת מה קורה אצלך?!?
אנחנו לא קוראים מחשבות :-)אם משהו לא עובד אצלך אז אתה צריך לתת לנו אינפורמציה מה כן קורה אצלך.
* אם אתה מקבל הודעת שגיאה למשל אז אתה צריך לצרף את ההודעה בצורה מלאה ומדוייקת מכיוון שההודעה כניראה תרמז לנו מה הבעיה.
* כבר כתבתי לך בהודעה קודמת שאין לנו מידע על איזה סוג של אפליקציה אתה מפתח (למשל אפליקציית WEB או אפליקציה חלונאית או שירות שרץ ברקע), ולא סיפקת לנו מידע על באיזה תבנית של פרוייקט אתה עובד (למשל אם זו אפליקציה WEB האם אתה עובד עם asp.net webform או אולי asp.net MVC או אולי asp.net core). הדברים לא זהים בברירת המחדל.
Ronen Ariely
[Personal Site] [Blog] [Facebook] [Linkedin]- נערך על-ידי pituachMVP, Moderator יום שלישי 26 אפריל 2016 17:24
-
בנוסף לקישורים ששמתי בשרשור הקודם (שהם מכילים גם דוגמאות קוד וגם הסברים קצרים), כדאי גם לבדוק את האפשרות של עבודה עם המחלקה HttpClient. המדריך הבא יכול לעזור בנשוא זה (זו מחלקה מאוד פשוטה לשימוש והיא עובדת גם בטכנונולוגיות וסביבות פיתוח חדשות יותר כמו asp.net core), והעיקר שזה מדריך טוב שיכול לתת הבנה כללית. כמובן שצריך לעבור עליו בצורה מסודרת:
http://www.asp.net/web-api/overview/advanced/calling-a-web-api-from-a-net-client
Ronen Ariely
[Personal Site] [Blog] [Facebook] [Linkedin] -
-
סוף שבוע טוב אמיר,
אני מקבל הרגשה שאתה לא קורא את כל מה שאני כותב לך, אלא רק חלקים :-(
תחילה אנא סגור את השרשור הקודםPOSTBACK לא קשור לתקשורת לאתר המרוחק ממנו אתה מנסה לקבל את התוכן אלא לשרת שלך. מאחורי הקלעים זו פעולה פשוטה של העברת מידע בשיטת GET כמו שקורה בכל טופס רגיל באתרי אינטרנט. זה הבסיס לכל הטכנולוגיה של asp.net webforms ולמה שנקרא Page Life Cycle. אם אתה לא שולט בנושא ואתה עובד הטכנולוגיה אז חייב לדעתי לעצור רגע וללמוד את הנושא לעומק. זה הבסיס להבנת מה שקורה מאחורי הקלעים. מקום טוב להתחיל בו זה בקישור הבא:
https://msdn.microsoft.com/en-us/library/ms178472.aspx
אם תצרף לנו את דוגמה נקייה של פרוייקט הכולל את הבעיה אז נוכל להציץ בו ולהבין יותר מה אתה עושה. בינתיים השאלה הגדולה היא קודם כל מה קורה כאשר אתה הדברים לא עובדים. אם לא מתקבלת הודעת שגיאה אז כניראה שלא היתה שגיאה (או שהקוד מפותח בצורה גרועה ואתה מסתיר הודעות שגיאה במכוון, מה שלא יאפשר לנטר אותן).
>> אם יש לך הודעות שגיאה, אז אנא צרף את ההודעה המדוייקת והמלאה
>> אם אין הודעות שגיאה ופשוט התוכן של האתר החיצוני לא נכנס לטופס שלך במיקום המתאים, אז תתחיל לנטר מה קורה מאחורי הקלעים ובאיזה שלב יש את הבעיה.
כיצד מבצעים ניטור בעיה בסיסי: בעזרת breakpoint
https://msdn.microsoft.com/en-us/library/5w9dfyd8.aspx1. האם כתובת ה URL הועברה טוב לאחר אירוע ה POSTBACK ? אם במקום להכניס לטופס את המידע מהאתר החיצוני אתה מכניס לתיבת הטקסט את הכתובת של ה URL עצמה txtURL.Text (לא את התוכן של האתר אלא הכתובת) באותו IF שבודק אם זה לא ריק, אז האם הטקסט מוצג טוב בטופס txtPageHTML.Text?
2. אם הכל עבד טוב בניסיון מעל תבדוק למשל מה אורך התווים שהגיעו חזרה ב PageHTMLBytes
* האם עברת על הקישורים והדברים שאני שמתי לך?
** אני ממליץ לעבור על הקישורים ששמתי לך בהודעות הקודמות ובעיקר הקישור בהודעה האחרונה הקודמת שלי. ההודעה שמתחילה עם התוכן:
בנוסף לקישורים ששמתי בשרשור הקודם (שהם מכילים גם דוגמאות קוד וגם הסברים קצרים), כדאי גם לבדוק את האפשרות של עבודה עם המחלקה HttpClient
Ronen Ariely
[Personal Site] [Blog] [Facebook] [Linkedin]
- נערך על-ידי pituachMVP, Moderator שבת 07 מאי 2016 17:19