وب سرویس Rest

این راهنما جهت سهولت کار برنامه نویسانی طراحی شده است که قصد دارند امکانات ارسال و دریافت پیامک را به نرم افزار های کاربردی خود اضافه نمایند. وب سرویس rest خدماتی مانند ارسال پیام ، دریافت پیام ، دریافت وضعیت پیامهای ارسالی و... را برای کاربران فراهم می کند.

آشنایی با اصول REST API

API مخفف واژگان Application Programming Interface به معنی «رابط های برنامه نویسی اپلیکیشن» می باشد. به طور خلاصه، Api این امکان را در اختیار یک برنامه نویس می‌دهد تا به‌ برخی یا تمامی قابلیت‌های یک نرم‌افزار دیگر دسترسی پیدا کند.

REST یا Representational State Transfer عبارت است از راه کارها و روش‌هایی که با استفاده از آن‌ها می‌توان به رد و بدل دیتا از طریق شبکه پرداخت. به عبارت دیگر، REST راهی ساده به منظور سازماندهی تعاملات بین سیستم‌های مجزا از یکدیگر می باشد.

معماری REST دارای یکسری ویژگی‌ها است که شاخص ترین آن‌ها عبارتند از:

  • ثبات و یکنواختی این معماری در جای جای API
  • عدم استفاده از Session در سمت سرور
  • به کارگیری کدهای وضعیت Http
  • استفاده از Url ها برای مشخص ساختن مسیرهای مد نظر
  • استفاده از QueryString به جای هدر پروتکل Http

با این تفاسیر، Restful API ها به خدمت توسعه دهندگان وب آمده‌اند تا فرایند توسعه ی وب، ایجاد تجربه ی کاربری بهتر، سهولت در استفاده از API ها و نقل و انتقال داده‌ها از طریق پروتکل Http را امکان‌پذیر سازند.

ارسال پیامک

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

ساختار URL:

  http://www.ahra.ir/webservice/ahrarest.svc/SendSms

متد:

Post

پارامترهای ورودی:

Parameter Location Format Description Required
Domain Body String نام دامنه اجباری
User Body String نام کاربر اجباری
Password Body String رمز عبور کاربر اجباری
From Body String شماره فرستنده پیام (برای مثال 5000110003333) اجباری
To Body String شماره گیرنده پیام (برای مثال 09122222222) اجباری
Message Body String متنی که باید ارسال شود اجباری
Receivetype Body String نحوه دریافت پیام (1 برای عادی و 2 برای فلش) اختیاری
Scheduledate Body Unixtime تاریخ و زمان دقیق ارسال پیام بر اساس Unixtime (برای مثال 1549573525 ) که اگر قید نشود در همان لحظه پیام ارسال می شود اختیاری

نمونه کد خروجی:

$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://www.ahra.ir/webservice/ahrarest.svc/SendSms",
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "domain=yourdomain&user=youruser&password=yourpass&to=09121111111&from=10000455&message=test",
CURLOPT_HTTPHEADER => ""
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}

HttpResponse response = Unirest.post("https://www.ahra.ir/webservice/ahrarest.svc/SendSms ")
.header("content-type", "application/x-www-form-urlencoded")
.body("domain=yourdomain&user=youruser&password=yourpass&to=09121111111&from=10000455&message=test")
.asString();


Install-Package RestSharp

var client = new RestClient(" https://www.ahra.ir/webservice/ahrarest.svc/SendSms ");
var request = new RestRequest(Method.POST);
request.AddParameter("Domain", "your Domain");
request.AddParameter("User", "your username");
request.AddParameter("Password", "your password");
request.AddParameter("From","20001234" );
request.AddParameter("To","09121111111" );
request.AddParameter("Message", "test");
request.AddParameter("Receivetype", "2");
request.AddParameter("Scheduledate", "1549573525");
IRestResponse response = client.Execute(request);

import requests
url = "https://www.ahra.ir/webservice/ahrarest.svc/SendSms "

payload = "domain=yourdomain&user=youruser&password=yourpass&to=09121111111&from=10000455&message=test"
headers = ""

response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)

var request = require("request");
var options = { method: 'POST',
url: ' https://www.ahra.ir/webservice/ahrarest.svc/SendSms ',
headers: '',
form:
{ domain: 'yourdomain',
user: 'youruser',
password: 'yourpassword',
to: '09121111111',
from: '10000455',
message: 'test'} };
request(options, function (error, response, body) {
if (error) throw new Error(error);

console.log(body);
});

خروجی:

                        

public enum ExceptionTypes
{
   Successfull = 0,
   Warning = -1,
   Error = -2
}

: ErrHandler ساختار خروجی
{

   public ExceptionTypes ExceptionType; // وضعیت اجرا و خطا
   public string ExceptionCode;         // کد خطا
   public string ReturnValue;           // مقدار برگشتی
   public string[] aReturnValue;        // جدول برگشتی
   public String PersianErrorMessage;   // پیغام خطا به فارسی
   public String EnglishErrorMessage;   // پیغام خطا به انگلیسی
}

: مثال

: Url نمونه صدا کردن وب سرویس از طریق

https://www.ahra.ir/webservice/ahrarest.svc/SendSms?domain=yourdomain&user=youruser&password=yourpassword&to=09121111111&from=10000455&message=test&Scheduledate=1549573525

https://www.ahra.ir/webservice/ahrarest.svc/xml/SendSms?domain=yourdomain&user=youruser&password=yourpassword&to=09121111111&from=10000455&message=test&Scheduledate=1549573525
                            
: Post نمونه صدا کردن وب سرویس از طریق

: Xml نمونه ورودی

<SendRequestData xmlns="https://www.ahra.ir">
   <Domain>yourdomain</Domain>
   <From>10000455</From>
   <Message>Ahra is a Star</Message>
   <Password>yourpassword</Password>
   <Receivetype>1</Receivetype>
   <Scheduledate>1549573525</Scheduledate>
   <To>09121111111</To>
   <User>youruser</User>
</SendRequestData>

: Json نمونه ورودی

{
   "Domain": "yourdomain",
   "User":"youruser",
   "Password":"yourpassword",
   "From":"10000455",
   "To":"09121111111",
   "Message":"Ahra is a Star",
   "Receivetype":"1",
   "Scheduledate":"1549573525"
}

: ( در سی شارپ  ( به نقاط قرمز دقت فرمایید UnixTimeStamp به DateTime  روش تبدیل

public static double DateTimeToUnixTimestamp(DateTime dateTime)
{
   DateTime unixStart = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc);
   long unixTimeStampInTicks = (dateTime.ToUniversalTime() - unixStart).Ticks;
   double retValue = (double)unixTimeStampInTicks / TimeSpan.TicksPerSecond;
   return Math.Floor(retValue);
}
                        
                    

نتیجه نهایی:

{
"ExceptionType": "Successful",
"ExceptionCode":"0" در ارسال اگر ExceptionCode برابر صفر باشد یعنی عملیات با موفقیت انجام شده است در غیر این صورت کد خطای مربوطه می باشد,

}

نمونه خروجی Json بدون خطا :
{
"EnglishErrorMessage":"",
"ExceptionCode":"0",
"ExceptionType":0,
"PersianErrorMessage":"",
"ReturnValue":"5743965",
"aReturnValue":["30436928"]

}
نمونه خروجی Xml بدون خطا :
<ErrHandler xmlns="https://schemas.datacontract.org/2004/07/WebService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
   <EnglishErrorMessage />
   <ExceptionCode>0</ExceptionCode>
   <ExceptionType>Successfull</ExceptionType>
   <PersianErrorMessage />
   <ReturnValue>5743966</ReturnValue>
   <aReturnValue xmlns:a="https://schemas.microsoft.com/2003/10/Serialization/Arrays">
      <a:string>30436929</a:string>
   
</aReturnValue>
</ErrHandler>

{
"ExceptionType": "Error",.
"ExceptionCode":"-126" اگر ارسال انجام نشود کد خطا مربوطه بازگشت داده می شود .
}

نمونه خروجی Json با خطا :
{
"EnglishErrorMessage":"User Not Found!",
"ExceptionCode":"-1111080010",
"ExceptionType":-2,
"PersianErrorMessage":"چنین کاربری وجود ندارد",
"ReturnValue":"",
"aReturnValue":[]

}
نمونه خروجی Xml با خطا :
<ErrHandler xmlns="https://schemas.datacontract.org/2004/07/WebService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
   <EnglishErrorMessage>User Not Found!</EnglishErrorMessage>
   <ExceptionCode>-1111080010</ExceptionCode>
   <ExceptionType>Error</ExceptionType>
   <PersianErrorMessage>چنین کاربری وجود ندارد</PersianErrorMessage>
   <ReturnValue />
   <aReturnValue xmlns:a="https://schemas.microsoft.com/2003/10/Serialization/Arrays" />
</ErrHandler>

پیام های دریافتی

از این متد برای گرفتن لیست پیام های دریافتی استفاده می شود، به ازای هر بار فراخوانی این متد 25 پیام بازگردانده می شود.

ساختار URL:

  http://www.ahra.ir/webservice/ahrarest.svc/ReceiveSms

متد:

Post

پارامترهای ورودی:

Parameter Location Format Description Required
Domain Body String نام دامنه اجباری
User Body String نام کاربر اجباری
Password Body String رمز عبور کاربر اجباری
FromId Body String اگر مقداری وارد نشود پیام های خوانده نشده و اگر مقداری وارد شود همه پیام های ورودی که شناسه آنها بعد از FromId باشد بر می گردد، طول آرایه 25 می باشد اجباری

نمونه کد خروجی:


$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => " https://www.ahra.ir/webservice/ahrarest.svc/ReceiveSms ",
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "domain=yourdomain&user=youruser&password=yourpassword&FromId=123",
CURLOPT_HTTPHEADER =>"" ,
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" .$err;
} else {
echo $response;
}

HttpResponse response = Unirest.post(" https://www.ahra.ir/webservice/ahrarest.svc/ReceiveSms ")
.header()

.body("domain=yourdomain&user=youruser&password=yourpassword&FromId=123")
.asString();


Install-Package RestSharp

var client = new RestClient(" https://www.ahra.ir/webservice/ahrarest.svc/ReceiveSms");
var request = new RestRequest(Method.POST);
request.AddParameter("domain","yourdomain" );
request.AddParameter("User", "your username");
request.AddParameter("Password", "your password");
request.AddParameter("FromId","123" );
IRestResponse response = client.Execute(request);

import requests
url = " https://www.ahra.ir/webservice/ahrarest.svc/ReceiveSms "

payload = "domain=yourdomain&user=youruser&password=yourpassword&FromId=123"
headers = { }
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)

var request = require("request");

var options = { method: 'POST',
url: ' https://www.ahra.ir/webservice/ahrarest.svc/ReceiveSms ',
headers:
{},
form: { domain: 'yourdomain',
user: 'youruser',
password: 'yourpassword',
FromId: '123'} };

request(options, function (error, response, body) {
if (error) throw new Error(error);

console.log(body);
});

خروجی:

                        

: خواهد بود DataTable ساختار خروجی از نوع

: Url نمونه صدا کردن وب سرویس از طریق

https://www.ahra.ir/webservice/ahrarest.svc/ReceiveSms?domain=yourdomain&user=youruser&password=yourpassword&FromId=123

    : داشته باشیم Xml یا در صورتیکه بخواهیم خروجی

https://www.ahra.ir/webservice/ahrarest.svc/xml/ReceiveSms?domain=yourdomain&user=youruser&password=yourpassword&FromId=123


: Post نمونه صدا کردن وب سرویس از طریق

: Xml نمونه ورودی

<ReceiveRequestData xmlns="https://www.ahra.ir">
   <Domain>yourdomain</Domain>
   <FromId>1234</FromId>
   <Password>yourpassword</Password>
   <User>youruser</User>
</ReceiveRequestData>

: Json نمونه ورودی

{
   "Domain": "yourdomain",
   "User":"youruser",
   "Password":"yourpassword",
   "FromId":"1234"
}

                        
                    

نتیجه نهایی:

نمونه خروجی Json بدون خطا :
{
"<DataTable xmlns=\"http:\/\/schemas.datacontract.org\/2004\/07\/System.Data\">
<xs:schema id=\"NewDataSet\" xmlns:xs=\"http:\/\/www.w3.org\/2001\/XMLSchema\" xmlns=\"\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">
<xs:element name=\"NewDataSet\" msdata:IsDataSet=\"true\" msdata:MainDataTable=\"xml\" msdata:UseCurrentLocale=\"true\">
<xs:complexType>
<xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">
<xs:element name=\"xml\">
<xs:complexType>
<xs:sequence>
<xs:element name=\"order\" msdata:AutoIncrement=\"true\" msdata:AutoIncrementSeed=\"1\" type=\"xs:decimal\" minOccurs=\"0\"\ />
<xs:element name=\"GetId\" type=\"xs:int\" minOccurs=\"0\"\ />
<xs:element name=\"SenderMobileNo\" type=\"xs:string\" minOccurs=\"0\"\ />
<xs:element name=\"SendTime\" type=\"xs:dateTime\" minOccurs=\"0\"\ />
<xs:element name=\"Body\" type=\"xs:string\" minOccurs=\"0\"\ />
<xs:element name=\"LineNumber\" type=\"xs:string\" minOccurs=\"0\"\ />
<\/xs:sequence>
<\/xs:complexType>
<\/xs:element>
<\/xs:choice>
<\/xs:complexType>
<\/xs:element>
<\/xs:schema>
<diffgr:diffgram xmlns:diffgr=\"urn:schemas-microsoft-com:xml-diffgram-v1\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">
<DocumentElement xmlns=\"\">
<xml diffgr:id=\"xml1\" msdata:rowOrder=\"0\">
<order>1<\/order>
<GetId>5735948<\/GetId>
<SenderMobileNo>09339543718<\/SenderMobileNo>
<SendTime>2018-08-18T00:43:13+03:30<\/SendTime>
<Body>868840023185226<\/Body>
<LineNumber>10000455<\/LineNumber>
<\/xml><\/DocumentElement>
<\/diffgr:diffgram>
<\/DataTable>"

}
نمونه خروجی Xml بدون خطا :
<DataTable xmlns="https://schemas.datacontract.org/2004/07/System.Data">
<xs:schema xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns="" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="xml" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="xml">
<xs:complexType>
<xs:sequence>
<xs:element name="order" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="1" type="xs:decimal" minOccurs="0" />
<xs:element name="GetId" type="xs:int" minOccurs="0" />
<xs:element name="SenderMobileNo" type="xs:string" minOccurs="0" />
<xs:element name="SendTime" type="xs:dateTime" minOccurs="0" />
<xs:element name="Body" type="xs:string" minOccurs="0" />
<xs:element name="LineNumber" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<DocumentElement xmlns="">
<xml diffgr:id="xml1" msdata:rowOrder="0">
<order>1</order>
<GetId>5735948</GetId>
<SenderMobileNo>09339543718</SenderMobileNo>
<SendTime>2018-08-18T00:43:13+03:30</SendTime>
<Body>
868840023185226
</Body>
<LineNumber>10000455</LineNumber>
</xml>
</DocumentElement>
</diffgr:diffgram>
</DataTable>

{در صورت رخ دادن خطا جدول خروجی خالی خواهد بود و رکوردی نخواهد داشت .
}

وضعیت پیام های ارسالی

برای دریافت وضعیت پیامک ارسالی به گیرنده از این متد استفاده می شود . کاربر می توان با هر بار فراخوانی این متد وضعیت 1 پیامک را دریافت کند . مقدار بازگشتی این متد می توانید مقدار صحیح شامل یکی از اعداد زیر باشد:

کد وضعیت:

کد توضیحات
0 وضعیت دریافت نشده است(یا پیامک در صف ارسال قرار دارد)
1 ایجاد شده
2 در انتظار ارسال به مخابرات
3 به مخابرات ارسال شده
4 به بی تی اس ارسال شده
5 رسیده به گوشی
6 در ارسال به بی تی اس ناکام مانده
7 در ارسال به مخابرات ناکام مانده
8 نرسیده به گوشی
9 کنسل شده
10 درلیست سیاه است
11 با خطا برگشته است
12 شماره مقصد غیر مجاز است

ساختار URL:

  http://www.ahra.ir/webservice/ahrarest.svc/GetDeliveryStatus?domain=yourdomain&user=youruser&password=yourpassword&SmsId=30436922

متد:

Post

پارامترهای ورودی:

Parameter Location Format Description Required
Domain Body String نام دامنه اجباری
User Body String نام کاربر اجباری
Password Body String رمز عبور کاربر اجباری
SmsId Body String شناسه پیامک که در هنگام ارسال دریافت شده است اجباری

نمونه کد خروجی:


$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => " https://www.ahra.ir/webservice/ahrarest.svc/GetDeliveryStatus ",
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "domain=yourdomain&user=youruser&password=yourpassword&SmsId=123",
CURLOPT_HTTPHEADER =>"" ,
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" .$err;
} else {
echo $response;
}

HttpResponse response = Unirest.post("https://www.ahra.ir/webservice/ahrarest.svc/GetDeliveryStatus ")
.body("domain=yourdomain&user=youruser&password=yourpassword&SmsId=123456")
.asString();


Install-Package RestSharp

var client = new RestClient(" https://www.ahra.ir/webservice/ahrarest.svc/GetDeliveryStatus ");
var request = new RestRequest(Method.POST);request.AddParameter("domain","yourdomain" );
request.AddParameter("User", "your username");
request.AddParameter("Password", "your password");
request.AddParameter("SmsId","115041869" );
IRestResponse response = client.Execute(request);

import requests

url = " https://www.ahra.ir/webservice/ahrarest.svc/GetDeliveryStatus "

payload = "domain=yourdomain&user=youruser&password=yourpassword&SmsId=123456"
headers = { }

response = requests.request("POST", url, data=payload, headers=headers)

print(response.text)

var request = require("request");

var options = { method: 'POST',
url: ' https://www.ahra.ir/webservice/ahrarest.svc/GetDeliveryStatus ',
headers:
{ },
form: { domain: 'yourdomain',
user: 'youruser',
password: 'yourpassword',
SmsId: '123456' } };

request(options, function (error, response, body) {
if (error) throw new Error(error);

console.log(body);
});

خروجی:

{
5
}

نتیجه نهایی:

{
5
وضعیت پیامک تا این لحظه"}

{ اگر خطایی رخ داده باشد .
-1 "کاربر مجاز نیست",

-2 "پیامک یافت نشد",
}

دریافت مشخصات کاربر

این متد برای دریافت مشخصات کاربر می باشد

ساختار URL:

  http://www.ahra.ir/webservice/ahrarest.svc/GetUserInfo

متد:

Post

پارامترهای ورودی:

Parameter Location Format Description Required
Domain Body String نام دامنه اجباری
User Body String نام کاربر اجباری
Password Body String رمز عبور کاربر اجباری

نمونه کد خروجی:


$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => "https://www.ahra.ir/webservice/ahrarest.svc/GetUserInfo",
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "domain=yourdomain&user=youruser&password=yourpassword",
CURLOPT_HTTPHEADER =>"" ,
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" .$err;
} else {
echo $response;
}

HttpResponse response = Unirest.post("https://www.ahra.ir/webservice/ahrarest.svc/GetUserInfo")
.body("domain=yourdomain&user=youruser&password=yourpassword")
.asString();


Install-Package RestSharp

var client = new RestClient("https://www.ahra.ir/webservice/ahrarest.svc/GetUserInfo");
var request = new RestRequest(Method.POST);request.AddParameter("domain","yourdomain" );
request.AddParameter("User", "your username");
request.AddParameter("Password", "your password");
IRestResponse response = client.Execute(request);

import requests

url = "https://www.ahra.ir/webservice/ahrarest.svc/GetUserInfo"

payload = "domain=yourdomain&user=youruser&password=yourpassword"
headers = { }
response = requests.request("POST", url, headers=headers)
print(response.text)

var request = require("request");
var options = { method: 'POST',
url: ' https://www.ahra.ir/webservice/ahrarest.svc/GetUserInfo',
headers:
{} form: { domain: 'yourdomain',
user: 'youruser',
password: 'yourpassword' } };

request(options, function (error, response, body) {
if (error) throw new Error(error);

console.log(body);
});

خروجی:

                        

                            : UserInfo ساختار خروجی
                            {

                               public Int64 SmsCredits = 0;                        // اعتبار پیامکی باقیمانده
                               public Int64 RialCredits = 0;                       // اعتبار ریالی باقیمانده
                               public DateTime LastLoginDateTime = DateTime.Now;   // آخرین زمان ورود به پنل

                               public bool Found = false;                          // آیا کاربر یافت شد؟
                               public string CompanyName = "Unknown";              // نام شرکت
                               public string FirstName = "Unknown";                // نام
                               public string LastName = "Unknown";                 // نام خانوادگی
                               public string MobileNo = "Unknown";                 // شماره همراه
                               public string DomainName = "Unknown";               // نام دامنه
                               public string UserName = "Unknown";                 // نام کاربری
                               public string EmailAddress = "Unknown";             // آدرس ایمیل
                               public bool Closed = false;                         // آیا اکانت کاربر بسته شده
                               public DateTime m_RegDate = DateTime.Now;           // تاریخ ایجاد کاربر
                               public string DefaultSmsNumber = "Unknown";         // شماره پیامک پیش فرض
                               public string ParentCustomer = "Unknown";           // نام شرکت بالادستی یا معرف
                               public string EditionFarsiName = "Unknown";         // نسخه نرم افزار تحت وب
                            }

                            : مثال

                            : Url نمونه صدا کردن وب سرویس از طریق

                            https://www.ahra.ir/webservice/ahrarest.svc/GetUserInfo?domain=yourdomain&user=youruser&password=yourpassword
                            
                                : داشته باشیم Xml یا در صورتیکه بخواهیم خروجی
                            
                            https://www.ahra.ir/webservice/ahrarest.svc/xml/GetUserInfo?domain=yourdomain&user=youruser&password=yourpassword


                            : Post نمونه صدا کردن وب سرویس از طریق

                            : Xml نمونه ورودی

                            <GetUserInfoRequestData xmlns="https://www.ahra.ir">
                               <Domain>yourdomain</Domain>
                               <Password>yourpassword</Password>
                               <User>youruser</User>
                            </GetUserInfoRequestData>

                            : Json نمونه ورودی

                            {
                               "Domain": "yourdomain",
                               "User":"youruser",
                               "Password":"yourpassword"
                            }

                        
                    

نتیجه نهایی:

نمونه خروجی Json بدون خطا :
{
"Closed":false,
"CompanyName":"شرکت اهرا سامانه ایرانیان",
"DefaultSmsNumber":"10000455",
"DomainName":"ahra",
"EditionFarsiName":"ویژه",
"EmailAddress":"info@ahra.ir",
"FirstName":"ایرج",
"Found":true,
"LastLoginDateTime":"\/Date(1549664176518+0330)\/",
"LastName":"نظریان آزاد",
"MobileNo":"09121111111",
"ParentCustomer":"شرکت اهرا سامانه ایرانیان",
"RialCredits":17136016323,
"SmsCredits":222414565,
"UserName":"iazad",
"m_RegDate":"\/Date(1318278600000+0330)\/"
}
نمونه خروجی Xml بدون خطا :
<UserInfo xmlns="https://schemas.datacontract.org/2004/07/WebService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Closed>false</Closed>
<CompanyName>شرکت اهرا سامانه ایرانیان</CompanyName>
<DefaultSmsNumber>10000455</DefaultSmsNumber>
<DomainName>ahra</DomainName>
<EditionFarsiName>ویژه</EditionFarsiName>
<EmailAddress>info@ahra.ir </EmailAddress>
<FirstName>ایرج</FirstName>
<Found>true</Found>
<LastLoginDateTime>2019-02-09T02:05:12.2632088+03:30</LastLoginDateTime>
<LastName>نظریان آزاد</LastName>
<MobileNo>09121111111</MobileNo>
<ParentCustomer>شرکت اهرا سامانه ایرانیان</ParentCustomer>
<RialCredits>17136016323</RialCredits>
<SmsCredits>222414565</SmsCredits>
<UserName>iazad</UserName>
<m_RegDate>2011-10-11T00:00:00</m_RegDate>
</UserInfo>

نمونه خروجی Json با خطا :
{
"Closed":false,
"CompanyName":"Unknown",
"DefaultSmsNumber":"Unknown",
"DomainName":"Unknown",
"EditionFarsiName":"Unknown",
"EmailAddress":"Unknown",
"FirstName":"Unknown",
"Found":false,
"LastLoginDateTime":"\/Date(1549664176518+0330)\/",
"LastName":"Unknown",
"MobileNo":"Unknown",
"ParentCustomer":"Unknown",
"RialCredits":0,
"SmsCredits":0,
"UserName":"Unknown",
"m_RegDate":"\/Date(1318278600000+0330)\/"
}
نمونه خروجی Xml با خطا :
<UserInfo xmlns="https://schemas.datacontract.org/2004/07/WebService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Closed>false</Closed>
<CompanyName>Unknown</CompanyName>
<DefaultSmsNumber>Unknown</DefaultSmsNumber>
<DomainName>Unknown</DomainName>
<EditionFarsiName>Unknown</EditionFarsiName>
<EmailAddress>Unknown </EmailAddress>
<FirstName>Unknown</FirstName>
<Found>false</Found>
<LastLoginDateTime>2019-02-09T02:09:12.7576286+03:30</LastLoginDateTime>
<LastName>Unknown</LastName>
<MobileNo>Unknown</MobileNo>
<ParentCustomer>Unknown</ParentCustomer>
<RialCredits>0</RialCredits>
<SmsCredits>0</SmsCredits>
<UserName>Unknown</UserName>
<m_RegDate>2019-02-09T02:09:12.7576286+03:30</m_RegDate>
</UserInfo>