PDA

View Full Version : آموزش وب سرویس برای اندروید در asp.net



download69
چهارشنبه 11 آذر 1394, 13:06 عصر
سلام دوستان برنامه نویس
مدتی بود که دنبال یک آموزش برای دسترسی به دیتابیس sql server بودم که نتونستم سمپل های خوبی رو پیدا کنم و روش هایی مثل کانکت مستقیم به دیتابیس وجود داشت که متاسفانه ضریب امنیتی صفر بود !!
با یک سری جستجو به وب سروی ها رسیدم که یکی از آموز های خود در همین انجمن برنامه نویس بود که وب سرویس را با کمک php و خروجی json انجام میداد و من با php اونم به خاطر دیتابسیم که از نوع sql server بود و روزانه آپدیت میشد داشتم.

به همین خاطر خودم دست به کار شدم :قلب:
و خوشبختانه موفق آمیز هم بود و به همین دلیل خواستم روشم رو اینجا بزارم تا دیگران هم استفاده کنن. نمیدونم این روش تا حالا استفاده شده یا آموزش داده شده یا نه ولی چون ندیدم گفتم بزارم چون خیلی از دوستان وب سروبس برای اندروید به کمک aps.net رو درخواست کرده بودن که بی جواب مونده بود :متعجب:

خوب دیگه بریم سراغ آموزش که در پست بعدی آغاز میشه.

• البته برای این آموزش پیش نیاز خاصی نیاز نیست و فقط برای پارز کردن (تجزیه) json، یه کم باید با json آشنایی داشته باشید که اگر یه سرچی بزنید مطلب به اندازه کافی برای پارز در اندروید وجود داره

download69
چهارشنبه 11 آذر 1394, 14:26 عصر
شروع :
در همین ابتدا میگم که شاید یک سری کارا اصولی به نظر نرسه ولی دوستان بعد از یادگیری روش میتونن به روش خودشون تغییر بدن.

هدف
ایجاد یک وب سرویس برای خواندن داده از دیتابیس و ایجاد خروجی json و در نهایت پارز کردن آن در اندروید.

برای شروع من از یک وب فرم (.aspx) استفاده کردم که کدش به شکل زیر است.(زبان مورد استفاده vb.net است)


<%@ Page Language="VB" AutoEventWireup="false" CodeFile="razor.aspx.vb" Inherits="Ascxs_razor" %>
<%= razor() %>

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

حالا بریم به کدهای اصلی برسیم:
در ابتدا یک امپورت برای استفاده از کلاس های دسترسی به دیتابیس انجا میدیم که در بالا ترین قسمت کد ها قرار میگیرد :

Imports System.Data.SqlClient

حالا هم بهتره که بریم سراغ تعریف تابع razor (دلیل استفاده از نام razor ارادت خاصی است که من به razor دارم :چشمک:)

Function razor() As String
If Request("act") = "read" And Request("id") <> Nothing Then
Read_Data_info()
Else
code = "{""st"" : false}"
End If
Return code
End Function

در ابتدای این تابع بررسی میشود که پارامتر های act و id که مشخص کننده نوع فعالیت و پارامتر لازم برای انجام فعالیت است مقدار گرفته باشند.
اگر مقدار گرفته باشند میریم سراغ خواندن دیتا و در غیر این صورت یک خروجی json خواهیم داشت که وضیعیت(با کلید st) رو برابر مقدار boolean که false است --> کلید:st و مقدار : false
البته چیزی رو که یادم رفت بگم این که این مقدار در یک متغیر به نام code قرار گرفته که من اونو به صورت سراسری و از نوع string تعریف کردم. البته متغیرهای سراسری دیگه ای هم از نوع استرینگ و با نام های name,family و city رو هم تعریف کردم که در ادامه به آن ها و نحوه مقدار دهی خواهیم رسید.

در این قسمت هم تابع Read_Data_info رو مورد بررسی قرار میدیم :


Sub Read_Data_info()
Dim con As New SqlConnection(ConfigurationManager.ConnectionStrin gs("ConnectionString").ConnectionString)
Dim cmd As New SqlCommand("", con)
Dim dr As SqlDataReader
cmd.CommandText = "select top 1 * from tblSample where id=@id"
cmd.Parameters.Add("@id",Data.SqlDbType.Int).Value=Request("id")
con.Open()
dr = cmd.ExecuteReader
If dr.Read Then
If IsDBNull(dr("name")) = False Then
name = dr("name")
End If

If IsDBNull(dr("family")) = False Then
family = dr("family")
End If

If IsDBNull(dr("city")) = False Then
city = dr("city")
End If

create_JSON()
Else
code = "{""st"" : false}"
End If
End Sub

در ابتدای این تابع کدهای دسترسی به دیتابیس و دستور انتخاب قرار گرفته است که دستور select به صورت زیر است و خیلی ساده برای این مثال آورده شده است. :

select top 1 * from tblSample where id=@id

که مشخص است تنها ما به یک رکورد نیاز داریم که id آن از طریق پارامتر id از آدرس گرفته میشود.
در صورتی که آی دی موجود باشد نام، فامیلی و شهر را از دیتابیس میخونیم و در متغیر های مربوطه میریزیم و سپس تابع ایجاد خروجی json رو اجرا میکنیم.

محتویات تابع create_JSON

Sub create_JSON()
code = "{""st"" : true,""name"" : """ + name + """,""family"" : """ + family + """,""city"" : """ + city + """}"
End Sub

این تابع هم خیلی خیلی ساده است:لبخند:
در متغیر سراسری code مقادیری رو که در متغیر های name و family و city قرار دادیم رو به کلید های name و family و city میدیم.

اگر به تابع اولی یعنی razor برگردیم میبینیم که در انتهای تابع دستور return را میبینیم که متغیر code را بازمیگرداند که در نهایت کد خروجی به صورت زیر می باشد :

اگر ما url رو به این شکل وارد کنیم :

localhost:14046/webservice/razor.aspx?act=read&id=1

خروجی خواهد شد :

{"st" : True,"name" : "علی","family" : "زارع","city" : "رامهرمز"}


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

Imports System.Data.SqlClient
Partial Class Ascxs_razor
Inherits System.Web.UI.Page
Dim code, name, family, city As String

Function razor() As String
If Request("act") = "read" And Request("id") <> Nothing Then
Read_Data_info()
Else
code = "{""st"" : false}"
End If
Return code
End Function

Sub Read_Data_info()
Dim con As New SqlConnection(ConfigurationManager.ConnectionStrin gs("ConnectionString").ConnectionString)
Dim cmd As New SqlCommand("", con)
Dim dr As SqlDataReader
cmd.CommandText = "select top 1 * from tblSample where id=@id"
cmd.Parameters.Add("@id",Data.SqlDbType.Int).Value =Request("id")
con.Open()
dr = cmd.ExecuteReader
If dr.Read Then
If IsDBNull(dr("name")) = False Then
name = dr("name")
End If

If IsDBNull(dr("family")) = False Then
family = dr("family")
End If

If IsDBNull(dr("city")) = False Then
city = dr("city")
End If

create_JSON()
Else
code = "{""st"" : false}"
End If
End Sub


Sub create_JSON()
code = "{""st"" : true,""name"" : """ + name + """,""family"" : """ + family + """,""city"" : """ + city + """}"
End Sub

End Class



در پست بعدی نحوه دریافت و پارز شدنش در اندروید را با هم بررسی خواهیم کرد

Nevercom
چهارشنبه 11 آذر 1394, 21:39 عصر
بخاطر شروع آموزش ازتون تشکر می کنم.
پیشنهاد می کنم بجای اینکه به این شکل رشته ی JSON رو تولید کنید، که هم احتمال بروز خطای زیادی داره، ناخوانا هست و برای داده های زیاد بسیار کند هست، از کتابخانه هایی که برای اینکار وجود داره استفاده کنید، مثل: http://www.newtonsoft.com/json

AGENT-20
جمعه 13 آذر 1394, 12:36 عصر
لطفا سوال منم جواب بدید

http://barnamenevis.org/showthread.php?513120-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D8%A8%D8%A7%D9%86%DA%A9-%D9%87%D9%86%DA%AF%D8%A7%D9%85-%D8%A8%D9%84%D9%88%D8%AA%D9%88%D8%AB-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A8%D8%A7-%D8%B2%D8%A7%D9%BE%DB%8C%D8%A7&p=2282852

sahar3ven
یک شنبه 13 تیر 1395, 13:43 عصر
سلام برای کسی که میخواد از صفر شروع کنه میشه شما هم از اول بگید و اینکه بخش اندرویدشم بگید
من یه برنامه میخوام برای اتصال اندروید به asp با C# باید بنویسم ممنون میشم راهنماییم کنید

ghamgin
دوشنبه 14 تیر 1395, 20:59 عصر
سلام
ضمن تشکر
اگه میشه نحوه دریافت و ارسال داده توسط برنامه اندرویدی از وب سرور php یا asp رو بگید
ممنون