متد های HttpUtility در Asp.Net

دوشنبه 22 تیر 1394

در این مقاله متدهای HttpUtility که در Net Framework. ارائه شده است توضیح داه می شوند . همچنین هدف هر متد و نحوه استفاده از آن ها ارائه می گردد .

 HttpUtility یک کتابخانه کلاس است که توسط Asp.Net ارائه شده است و شامل مجموعه ای از متد ها می باشد که برای توسعه نرم افزار وب مفید است . این ابزار عمدتا متد هایی برای رمزگذاری و رمز گشایی آدرس (Url) جهت توسعه نرم افزار وب ارائه می کند . اکنون لیستی از متد های  HttpUtility  را بررسی می کنیم .

1 . UrlEncode/UrlDecode

2 . HtmlEncode/HtmlDecode

3 . HtmlAttributeEncode

4 . ParseQueryString

5 . UrlPathEncode

 

متد UrlEncode/UrlDecode

هدف اصلی این دو متد رمز گشایی و رمز گذاری آدرس ها است . به دلیل اینکه برخی موارد بصورت نا امن در مرورگر ارسال می شوند نیاز به رمزگذاری داریم . برخی کاراکتر ها برای مرور گر غیر قابل فهم هستند و منجر ببه عدم تطابق ذاذه ها در پایان دریافت می شوند . کاراکتر ها مانند علامت سوال ( ؟ ) ، & ، / و Space ممکن است توسط مرور از بین روند .

برای مثال کاربر می بایست اطلاعات را در Url بصورت زیر ارسال  کند :

string Url = "http://localhost:9618/WebForm1.aspx?" + "names=suresh#satheesh#vijay#"; 

در پایان ، اگر برنامه نویس بخواهد مقدار querystring ادرس مرورگر را بخوانیم بصورت زیر عمل می کنیم:

string QueryStringValues = Request.QueryString["names"];

توسعه دهندگان آن را به عنوان “suresh” که نتیجه مورد نظر نمی باشد می خوانند .

نیاز به رمزگذاری آدرس مرورگر و خواندن مقادیر querystring برای دسترسی به نتیجه مورد نظر داریم .

UrlEncode

مثال

string Url = "http://localhost:9618/WebForm1.aspx?" + HttpUtility.UrlEncode("names=suresh#satheesh#vijay");

Response.Redirect(Url);

زمانیکه UrlEncode برای آدرس اینترنتی بالا استفاده کنیم و آدرس جدید بصورت زیر می باشد :

http://localhost:9618/WebForm1.aspx?names=suresh%23satheesh%23vijay

زمانیکه کاربر سعی دارد مقادیر querystring را در پایان بدست آورد ، نتیجه بصورت زیر می باشد :

“suresh#satheesh#vijay”

مثال :

string QueryStringValues = Request.QueryString["names"];       

Response.Write(QueryStringValues);

 

UrlDecode

این متد برای تبدیل آدرس های رمزگذاری شده به رشته رمزگشایی شده می باشد . اگر می خواهید همه آدرس را در پایان رمزگشایی کنید ، فقط به صورت زیر رمزگشایی کنید :

مثال

string Url = HttpUtility.UrlDecode(Request.RawUrl); 

نتیجه مورد انتظار به این شکل است :

 "/WebForm1.aspx?names=suresh#satheesh#vijay” ; 

همچنین می توانیم مقایر querystring را بصورت زیر رمزگشایی کنیم :

مثال:

string QueryStringValues = Request.QueryString["names"];

QueryStringValues = HttpUtility.UrlDecode(QueryStringValues);  

 

2 . متد HtmlEnCode/HtmlDecode

هدف اصلی HtmlEncode تبدیل رشته HTML-encoded برای انتقال HTTP قابل اطمینان از وب سرور به کاربر می باشد . و همچنین کاراتر هایی که در HTML مجاز نیستند مانند “<”,”>” و فضاها و علائم نگارشی  را تبدیل می کند برای مثال ، < با &lt جایگزین می شود و " با &quot جایگزین می شود .

HtmlDecode رشته ای که رمزگذاری شده بود را به حالت اصلی تبدیل می کند .

برای مثال کاربر درخواست می کند که اطلاعات بصورت زیر نمایش داده شوند .

مثال : “<Suresh Kumar>”

اگر تبرنامه نویس به اشتباه  از دستورات زیر استفاده کند چیزی در مرورگر مشاهده نمی گردد .

Label1.Text = "<Suresh Kumar>"

برای نمایش اطلاعات صحیح از HtmlEncode استفاده می کنیم .

مثال:

Label1.Text = HttpUtility.HtmlEncode("<Suresh Kumar>");  

همچنین از  Htmlencoding برای اجتناب از Cross-site scripting استفاده می شود .

 

3 . متد HtmlAttributeEncode

این متد برای رمزگذاری برخی کاراکتر ها مانند “ ، & ، { استفاده می شود . همچنین این متد از متد HtmlEncode سریع تر است .

مثال :

Response.Write(HttpUtility.HtmlAttributeEncode(TextBox3.Text));

 

4 . متد ParseQueryString

این متد برای بازیابی مقادیر querystring یک آدرس اینترنتی در قالب NameValueCollection استفاده می شود . NameValueCollection در Net framework. با قضای نام System.Collections.Specialized می باشد . در اینجا کاربر یک آدرس اینترنتی با مقادیر querystring دارد سپس برای بازیابی قادیر از ParseQueryString استفاد می شود .

مثال :

string Url = "http://localhost:3873/WebForm1.aspx?" + "param1=val1&param2=val2&param3=val3&param4=val4&param5=val5";

Response.Redirect(Url);

در پایان ریافت یا در بخش دستورات می توانید مقادیر querystring را با استفاده از ParseQueryString بخوانید .

Uri Uri = new Uri(Request.Url.AbsoluteUri);

NameValueCollection nvColl = HttpUtility.ParseQueryString(Uri.Query);

string param1value = nvColl["param1"];

در پایان دریافت Request.QueryString همچنین NameValueCollection در مقادیر querystring را بازیابی می کند .

بنابراین ، HttpUtility.ParseQueryString فقط در پایان دریافت استفاده نمیشود بلکه در بخش دستورات نیز استفاده می شود .

5 . متد UrlPathEncode

متد UrlPathEncode شبیه متد UrlEncode می باشد که برای رمزگذاری آدرس اینترنتی استفاده می شود . تنها تفاوت بین این دو این است که UrlEncode فاصله  با “+” جایگزین می شود اما در UrlPathEncode فاصله با “%20” جایگزین می شود.

برای مثال اگر بخواهید به این روش رمزگذاری کنید، Url رمزگذاری نمی شود :

string strUrl = "http://localhost:9618/WebForm1.aspx?names=suresh satheesh vidjay";

strUrl = HttpUtility.UrlPathEncode(strUrl);

می توانید از روش زیر برای رمز نگاری querystring استفاده کنید :

string strUrl = "http://localhost:9618/WebForm1.aspx?names" + HttpUtility.UrlPathEncode("suresh satheesh vijay");

 

قربانی

نویسنده 44 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید