فراخوانی Web Service با استفاده از SOAP Request

shape
shape
shape
shape
shape
shape
shape
shape
راهنمای وب سرویس تبدیل گفتار به نوشتار

(فراخوانی Web Service با استفاده از SOAP Request)در این مقاله ، نحوه ارسال یک درخواست به صورت Post به یک وب سرویس با استفاده از SOAP و سپس گرفتن پاسخ از آن را خواهیم آموخت .

فراخوانی وب سرویس با asp.net

امروزه سرویس های زیادی مانند WCF, REST, Web API و … در دسترس هستند. اما هنوز Web Service ها نقش مهمی در ایجاد ارتباط بین برنامه های چندسکویی (cross platform) ایفا می کنند و اطلاعات را از یک برنامه به سایر برنامه ها منتقل می کنند.

ما در این مقاله از یک وب سرویس از پیش ساخته شده استفاده می کنیم و به همین دلیل، دیگر مراحل ساخت وب سرویس را توضیح نمی دهیم. فقط به نحوه فراخوانی وب سرویس با استفاده از SOAP request می پردازیم.

گام اول: بدنه Web Service SOAP Request را پیدا کنید.

ما یک وب سرویس داریم که بر روی IIS محلی ما host شده است . بنابراین آدرس وب سرویس را در مرورگر وارد کنید و سپس صبر کنید تا صفحه زیر برای شما نمایش داده شود:

نحوه ارسال یک درخواست به صورت Post به یک وب سرویس با استفاده از SOAP و سپس گرفتن پاسخ از آن را خواهیم آموخت.

همان طور که در تصویر بالا می بینید، دو متد در وب سرویس ما وجود دارد. بر روی یکی از متدها (مثلا Sum) کلیک کنید. با این کار، تصویر زیر برای شما نمایش داده خواهد شد.

نحوه ارسال یک درخواست به صورت Post به یک وب سرویس با استفاده از SOAP و سپس گرفتن پاسخ از آن را خواهیم آموخت.

در تصویر بالا، مشاهده می کنیم که همه جزئیات ایجاد یک درخواست SOAP و همچنین مقادیر پارامتر مورد نیاز برای invoke کردن HttpWebRequest ها نشان داده شده اند . بنابراین، بیایید مرور کوتاهی بر این پارامترها انجام بدهیم.

HTTP Method : بیان کننده نوع درخواست HTTP است که می خواهید از سرویس ، درخواست کنید. مانند GET , POST ,PUT و یا delete.

Host : آدرس مکانی که سرویس بر روی آن host شده است را نشان می دهد. که در این مقاله localhost است. به عنوان مثال : http://localhost/Employee.asmx

Content-Type : بیان کننده نوع درخواستی است که شما از سرویس انجام می دهید ، مانند XML و یا json.که در این مقاله text/xml است.

Content-Length : بیان کننده طول بدنه request شما است .

SOAPAction : این پارامتر، یک صفت بسیار مهم برای شناسایی web method و فراخوانی آن از چندین web method است.

SOAP Body : بدنه درخواست و پاسخ را مشخص می کند.

امیدواریم که با این توضیحات، پارامترها برای شما آسان تر شده باشند.

گام دوم: یک برنامه Console ایجاد کنید تا وب سرویس را از طریق آن فراخوانی کنید.

1-به آدرس “Start”, “All Programsبروید و “Microsoft Visual Studio 2015” را باز کنید.

2-بر روی “File”, “New”, و سپس “Project…” کلیک کرده و یک برنامه Console باز کنید.

3-یک نام برای پروژه انتخاب کنید و مکان ذخیره سازی آن را نیز مطابق با دلخواه خودتان تغییر بدهید.

حالا فایل Program.cs را باز کنید و متد زیر را برای ایجاد HttpWebRequest بنویسید:

 

public HttpWebRequest CreateSOAPWebRequest()
{
//Making Web Request
HttpWebRequest Req = (HttpWebRequest)WebRequest.Create(@”http://localhost/Employee.asmx”);
//SOAPAction
Req.Headers.Add(@”SOAPAction:http://tempuri.org/Addition”);
//Content_type
Req.ContentType = “text/xml;charset=\”utf-8\””;
Req.Accept = “text/xml”;
//HTTP method
Req.Method = “POST”;
//return HttpWebRequest
return Req;
}

حالا یک متد برای invoke کردن وب سرویس با استفاده از بدنه پاسخ SOAP ایجاد می کنیم.

public void InvokeService(int a, int b) {
//Calling CreateSOAPWebRequest method
HttpWebRequest request = CreateSOAPWebRequest();

XmlDocument SOAPReqBody = new XmlDocument();
//SOAP Body Request
SOAPReqBody.LoadXml(@ “<?xml version=”
“1.0”
” encoding=”
“utf-8”
“?> < soap: Envelope xmlns: soap = “”
http: //schemas.xmlsoap.org/soap/envelope/”” xmlns:xsi=””http://www.w3.org/2001/XMLSchema-instance”” xmlns:xsd=””http://www.w3.org/2001/XMLSchema””>
< soap: Body >
< Addition xmlns = “”
http: //tempuri.org/””>
< a > ” + a + @” < /a> < b > ” + b + @” < /b> < /Addition> < /soap:Body> < /soap:Envelope>”);

using(Stream stream = request.GetRequestStream()) {
SOAPReqBody.Save(stream);
}
//Geting response from request
using(WebResponse Serviceres = request.GetResponse()) {
using(StreamReader rd = new StreamReader(Serviceres.GetResponseStream())) {
//reading stream
var ServiceResult = rd.ReadToEnd();
//writting stream result on console
Console.WriteLine(ServiceResult);
Console.ReadLine();
}
}
}

حالا متد بالا را از متد اصلی درون برنامه به روش زیر فراخوانی کنید.

static void Main(string[] args)
{
//creating object of program class to access methods
Program obj = new Program();
Console.WriteLine(“Please Enter Input values..”);
//Reading input values from console
int a = Convert.ToInt32(Console.ReadLine());
int b = Convert.ToInt32(Console.ReadLine());
//Calling InvokeService method
obj.InvokeService(a, b);
}

حالا همه کدهایی که در داخل فایل Program.cs هستند مانند زیر خواهند بود

using System;
using System.IO;
using System.Net;
using System.Xml;

namespace UsingSOAPRequest
{
public class Program
{
static void Main(string[] args)
{
//creating object of program class to access methods
Program obj = new Program();
Console.WriteLine(“Please Enter Input values..”);
//Reading input values from console
int a = Convert.ToInt32(Console.ReadLine());
int b = Convert.ToInt32(Console.ReadLine());
//Calling InvokeService method
obj.InvokeService(a, b);
}
public void InvokeService(int a, int b)
{
//Calling CreateSOAPWebRequest method
HttpWebRequest request = CreateSOAPWebRequest();

XmlDocument SOAPReqBody = new XmlDocument();
//SOAP Body Request
SOAPReqBody.LoadXml(@”<?xml version=””1.0″” encoding=””utf-8″”?>
<soap:Envelope xmlns:soap=””http://schemas.xmlsoap.org/soap/envelope/”” xmlns:xsi=””http://www.w3.org/2001/XMLSchema- instance”” xmlns:xsd=””http://www.w3.org/2001/XMLSchema””>
<soap:Body>
<Addition xmlns=””http://tempuri.org/””>
<a>” + a + @”</a>
<b>” + b + @”</b>
</Addition>
</soap:Body>
</soap:Envelope>”);

using (Stream stream = request.GetRequestStream())
{
SOAPReqBody.Save(stream);
}
//Geting response from request
using (WebResponse Serviceres = request.GetResponse())
{
using (StreamReader rd = new StreamReader(Serviceres.GetResponseStream()))
{
//reading stream
var ServiceResult = rd.ReadToEnd();
//writting stream result on console
Console.WriteLine(ServiceResult);
Console.ReadLine();
}
}
}

public HttpWebRequest CreateSOAPWebRequest()
{
//Making Web Request
HttpWebRequest Req = (HttpWebRequest)WebRequest.Create(@”http://localhost/Employee.asmx”);
//SOAPAction
Req.Headers.Add(@”SOAPAction:http://tempuri.org/Addition”);
//Content_type
Req.ContentType = “text/xml;charset=\”utf-8\””;
Req.Accept = “text/xml”;
//HTTP method
Req.Method = “POST”;
//return HttpWebRequest
return Req;
}
}
}

تصویر نهایی به این شکل خواهد بود

 

مطالعه بیشتر

 

 

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *