نماد سایت امپراطوری من

ارسال درخواست به صفحه وب در سی شارپ

سی شارپ

در این آموزش قصد داریم تا نحوه ی ارسال درخواست به یک صفحه وب را در زبان برنامه نویسی سی شارپ آموزش دهیم. اولین چیزی که برای ارسال درخواست به سرور نیاز داریم، روش ارسال یا همان متد(Method) است. در گذشته دو متد GET و POST برای ارسال اطلاعات میان کاربران(Client) و سرور‌ها وجود داشت. بعدها این متد‌ها گسترش پیدا کردند. در حال حاضر پرکاربردترین این متد‌ها شامل انواع زیر هستند:

علاوه بر متد، که روش برقراری ارتباط با سرور را تعیین می‌کند، درخواست ما بخش‌های دیگری نیز دارد. دو مورد مهم از اجزای تشکیل دهنده درخواست ما، Header و Body است.

[divider]

Header درخواست HTTP

وظیفه Header اعمال تنظیمات مورد نیاز برای درخواست است. هر درخواست می‌تواند چندین Header داشته باشد. برخی از مهم‌ترین Header ها عبارتند از:

Content-Type: تعیین کننده ساختار اطلاعات در Body است. یکی از پرکاربردترین انواع آن، مقدار application/json است که به سرور اعلام می‌دارد که اطلاعات در Body بصورت json قرار گرفته اند. همچنین مقدار application/x-www-form-urlencoded نیز بسیار پرکاربرد است. برای انتقال فایل به سرور نیز، از مقدار multipart/form-data استفاده می‌شود چرا که فایل‌ها نسبت به درخواست‌های دیگر حجیم هستند و اینگونه درخواست‌ها باید به چندین بخش مجزا تبدیل شده و به سرور انتقال پیدا کنند. برای همین از مقدار multipart/form-data استفاده می‌شود.

[divider]

بدنه‌ی درخواست HTTP

بدنه یا Body شامل اطلاعاتی است که ما به صفحه وب مورد نظر ارسال می‌کنیم. مثلا زمانی که می‌خواهیم یک کاربر جدید را ثبت نام کنیم، اطلاعاتی مانند نام، نام کاربری، رمزعبور و… را در داخل بدنه‌ی درخواست قرار داده و به سرور ارسال می‌کنیم. در ادامه یک کلاس در زبان سی‌شارپ ایجاد می‌کنیم که به ما کمک می‌کند درخواست‌های خود را به سرور ارسال کنیم.

 

ارسال درخواست به صفحه وب در سی شارپ

برای این‌کار، ابتدا کلاس زیر را به پروژه خود اضافه کنید:


public class MyWebRequest
{
private WebRequest request;
private Stream dataStream;

private string status;

public String Status
{
get
{
return status;
}
set
{
status = value;
}
}

public MyWebRequest(string url)
{
// Create a request using a URL that can receive a post.

request = WebRequest.Create(url);
}

public MyWebRequest(string url, string method)
: this(url)
{

if (method.Equals("GET") || method.Equals("POST")|| method.Equals("PUT")|| method.Equals("PATCH")<code class="csharp plain"></code>|| method.Equals("DELETE")) { // Set the Method property of the request to POST. request.Method = method; } else { throw new Exception("Invalid Method Type"); } } public MyWebRequest(string url, string method, string data) : this(url, method) {
// Create POST data and convert it to a byte array.
string postData = data;
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
// Set the ContentType property of the WebRequest.
request.ContentType = "application/x-www-form-urlencoded";
// Set the ContentLength property of the WebRequest.
request.ContentLength = byteArray.Length;
 // Get the request stream.
dataStream = request.GetRequestStream();
// Write the data to the request stream.
dataStream.Write(byteArray, 0, byteArray.Length);
// Close the Stream object.
dataStream.Close();
}
public string GetResponse() {
// Get the original response. WebResponse response = request.GetResponse();
this.Status = ((HttpWebResponse)response).StatusDescription;
// Get the stream containing all content returned by the requested server.
dataStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader(dataStream);
// Read the content fully up to the end.
string responseFromServer = reader.ReadToEnd();
// Clean up the streams.
reader.Close();
dataStream.Close();
response.Close();
return responseFromServer;
string data = "username=yusef&password=1234"; 

کلاسی که کد آن در بالا قرار دارد را به پروژه خود اضافه کنید. در هر کجای پروژه‌تان که نیاز دارید، یک object از این کلاس ایجاد کنید. در هنگام ایجاد object شما می‌توانید آدرس سرور، متد و بدنه درخواست خود را تعیین کنید. سپس به کمک متد GetResponse این کلاس، نتیجه درخواست(جواب برگشتی از وب) را بصورت یک رشته متنی در دسترس خواهید داشت.

توجه داشته باشید که متغیر data فقط زمانی مقداردهی می شود که متد ارسال GET نباشد. زیرا در متد GET داده ها در url و به دنبال آدرس صفحه می آیند. قالب اطلاعات در داخل متغیر data به شکل زیر خواهد بود:


string data = "username=yusef&password=1234";

همانطور که گفتیم کلاسی که به پروژه خود اضافه کردیم، یک متد به نام GetResponse دارد که نتیجه درخواست(جواب برگشتی از وب) را برمی گرداند.

برای استفاده از امکانات این کلاس در پروژه خود، کافیست از نمونه کد زیر استفاده کنید:

//create the constructor with post type and few data
string data = "username=yusef&password=1234";
MyWebRequest myRequest = new MyWebRequest("http://www.yoursite.ir","POST",data);
//show the response string on the console screen.
string Response = myRequest.GetResponse();

موفق و پیروز باشید!
همچنین می توانید نمونه پروژه مربوط به این آموزش را دانلود نمایید:
پسورد فایل: www.myempire.ir

[button color=”red” size=”medium” link=”https://myempire.ir/wp-content/uploads/WebRequestExamplewww.myempire.ir_.zip” target=”blank” ]دریافت نمونه پروژه[/button]

خروج از نسخه موبایل