رفتن به مطلب
  • 0

انجام چند ارسال و دریافت با AriaAsyncTask


arastooms

سوال

سلام همونطور که در جریان هستید با کنتبخونه okhhtp میشه چند تا job مختلف تعریف کرد و گفت اگر مثلا job1 انجام شده بود بیا فلان کار رو بکن و یا اگر job2 بود کار دیگه ...
همین کار رو با کتابخونه خوب استاد شاهدی یعنی AriaAsyncTask میخام انجام بدم ولی نمیدونم چه طور 
نمونه کد ها رو قرار میدم که البته فقط یک ارسال و دریافت به فایل php سایتم داشتم و دومی رو نمیدونم چه طور تعریف کنم 
ممنون میشم راهنمایی بفرمایید 
مرسی

#Region  Project Attributes 
	#ApplicationLabel: B4A Example
	#VersionCode: 1
	#VersionName: 
	'SupportedOrientations possible values: unspecified, landscape or portrait.
	#SupportedOrientations: unspecified
	#CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes 
	#FullScreen: False
	#IncludeTitle: True
#End Region

Sub Process_Globals

End Sub

Sub Globals

'کتابخانه استاد امین شاهدی برای ارسال داده ها به هاست
		Dim AriaAsyncTask1 As AriaAsyncTask
		Dim AriaAsyncTaskDownloader1 As AriaAsyncTaskDownloader
'این مقداری رو که از پی اچ پی ارسال میشه ذخیره میکنه که آنالیز بشه
		Dim result_php As String
End Sub

Sub Activity_Create(FirstTime As Boolean)
'اینشیالایز آریا اساین تسک برای ارسال مطالب در صورت اتصال اینترنت	
AriaAsyncTask1.Initialize("AriaAsyncTask1")
AriaAsyncTaskDownloader1.Initialize(AriaAsyncTask1)

send_get_add_database
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

#Region ساب های اساین تسک 
این ساب رو برای ارسال داده استفاده میکنم 
Sub send_get_database
	
	 AriaAsyncTask1.Run(Array As String(xxxxxxxxxxxxxxx , _
	 "&date="&date& _
	 "&time="&time& _
	 "&app_name="&app_name& _
	 "&package_name="&package_name& _
	 "&app_version="&app_version& ))	

End Sub
'--------------------------------------------------------------------------
Sub AriaAsyncTask1_DoInBackground(Params() As Object) As Object
		
	Try		
		result_php = AriaAsyncTaskDownloader1.Get(Params(0)).POST(Params(1)).String
		Return "done/موفق"
		
	Catch
		
		Log(LastException)
		Return "error/نــــاموفق"
		
	End Try

End Sub
Sub AriaAsyncTask1_OnPostExecute(Result As Object)

'اینجا مقادیر که از فایل
'php 
'برگشت داده شده و در ریجکس جداشده 

Log ("result_php ===> "&result_php)	
ToastMessageShow("result_php ===> "&result_php,True)

			
End Sub
'--------------------------------------------------------------------------
Sub AriaAsyncTask1_OnCancelled
End Sub
Sub AriaAsyncTask1_OnPreExecute
End Sub
#End Region

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

3 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

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

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

Sub task_DoInBackground(Params() As Object) As Object

Dim data1 As String = Atask.Downloader.Get("Url1").String
Dim data2 As String = Atask.Downloader.Get("Url2").POST("name=amin").String
Dim data3 As String = Atask.Downloader.Get("Url3").String	

Dim list As List ' sakhte ye list az maqadir baraye daryarf tuye OnPostExecute	
list.Initialize
list.Add(data1)	
list.Add(data2)	
list.Add(data3)	
Return list

End Sub

Sub task_OnPostExecute(Result As Object)
	Dim list As List = Result
	Log(list.Get(0))
	Log(list.Get(1))
	Log(list.Get(2))
End Sub

این یه نمونه با array 

Sub task_DoInBackground(Params() As Object) As Object
Dim datas(3) As String ' ye array ba 3ta item
datas(0) = Atask.Downloader.Get("Url1").String
datas(1) = Atask.Downloader.Get("Url2").POST("name=amin").String
datas(2) = Atask.Downloader.Get("Url3").String	
Return datas
End Sub

Sub task_OnPostExecute(Result As Object)
	Dim datas() As String = Result
	Log(datas(0))
	Log(datas(1))
	Log(datas(2))
End Sub

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱ ساعت قبل، امین شاهدی گفته است :

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

 

استاد شاهدی عزیز ابتدا تشکر بابت همه زحمات شما که واقعا گره گشای بیسیک هستید و کتابخونه های شما واقعا کاربردی و عالی هست
حقیقت این هست که من میخام کنترل هم داشته باشم رو ی دریافت 
برای مثال اگر عکسی که دانلود کردم رسید و همه چی خوب بود بیاد اون رو نشون بده در ایمیج ویو!!!
چه طور میتونم بگم 

امین جان من در تشخیص دادن انجام شدن یا نشدن وظیفه های متعدد به گتابخونه شما مشکل دارم 
برای مثال فرض میکنیم 3 وظیفه مختلف بهش دادیم

 

وظیفه 1- دانلود یک عکس

وظیفه 2 - ارسال و دریافت اطلاعات 

وظیفه 3 - دریافت دریافت یک فایل موسیقی


اگر ----وظیفه شماره یک  ----- موفق آمیز بود  ------
بیا عکس رو نشون بده در ایمیج ویو 
در غیر این صورت 
--- عکس xxxxx رو نشون بده 

 

حالا دانلود دوم که میخام بهش بدم اصلا عکس نیست و یه ارسال و دریافت اطلاعات به هاست خودمه از اطلاعات گوشی (( همین مثال بالا که زدم ))
میخام بگم این مشخصات رو بفرست و جوابش رو بگیر 
اگر ----- وظیفه دوم ----موفقیت آمیز بود----- 
بیا و تُست بده 
اطلاعات ارسال و جواب زیر دریافت شد

خوب 

وظیفه سوم هم مثل وظیفه اول دانلود عکس هست
میگم اگر وظیفه 3 انجام شده بود با موفقیت و دریافت شده بود 
بریز در خال پوشه فایل

 

==================
حالا میخام بگم اگر وظیفه یک و سه انجلم شده بود بنویس عکس آلبم و آهنگ دانلود شد
=================

در واقع نمی تونم (( این دستور تشخیص رو بفهمم در این کتابخونه ===)) 
از httpjob خیلی ساده به این صورت استفاده میکردم 
If job.Success = True Then
     
      Select job.JobName
     

   Case "xxxx1111"

 Case "xxxxxxx22222"

 Case "xxxxxx33333"

نمیدونم تونستم منظورم رو برسونم 
اگر بد متوجه شدم و شما جواب رو ارسال کردید من رو ببخشید چون اطلاعاتم کم هست و لطف کنید کمی ساده تر توضیح بدید که شاگردای تازه وارد مثل من متوجه بشم 
باز هم تشکر و ممنون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ببینیند کد ها به ترتیب انجام میشه دیگه ، تا عملیات اون کد   انجام نشه نمیره خط بعد این از خاصیت های ترد جداست ، توی ترد اصلی اگه به این صورت باشه UI بلاک میشه و برنامه کرش میکنه ، ولی توی تسک کد ها به ترتیب اجرا میشه برای مثال کد زیر     : 

Sub task_DoInBackground(Params() As Object) As Object
Dim datas(3) As String ' ye array ba 3ta item
datas(0) = Atask.Downloader.Get("Url1").String
datas(1) = Atask.Downloader.Get("Url2").POST("name=amin").String
datas(2) = Atask.Downloader.Get("Url3").String	
Return datas
End Sub

اول کد get از url1 انجام میشه ، حالا ممکنه 5ثانیه طول بکشه ، ترد صبر میکنه تا کد کامل انجام شه  ، بعد میره خط بعد و .... حالا جوری که شما میخواین تنها کاری که باید بکنین اینه کد ها تون رو به ترتیب بنویسین و هرجا که نیاز بود ui رو تغییر بدین از PublishProgress استفاده کنین ، تسک به ترتیب همه رو انجام میده ! نمونه زیر رو ببین جوری که گفتی مثل این میشه تقریبا

Sub task_DoInBackground(Params() As Object) As Object
'وظیفه 1- دانلود یک عکس :
Dim picFile As AriaFile
picFile.initialize(File.DirInternal,"pic1.jpg")
Atask.Downloader.Get("address ax").File(picFile)
Atask.PublishProgress(201) ' 201 ro mifrestim be method OnProgressUpdate ta ui ro taqir bedim


'وظیفه 2 - ارسال و دریافت اطلاعات :
Dim data As String = Atask.Downloader.Get("addressPHP").String
Atask.PublishProgress(202) ' 202 ro mifrestim be method OnProgressUpdate ta ui ro taqir bedim


'وظیفه 3 - دریافت دریافت یک فایل موسیقی
'mitunid mesle download ax downloadesh konin va ya be surate zir 
Dim audioFile As AriaFile
audioFile.initialize(File.DirInternal,"a1.mp3")
Atask.Downloader.Download("Address file audio",audioFile.GetPath)
'ax download shod hala miaim axo copy mikonim tu external
File.Copy(File.DirInternal,"a1.mp3",File.DirRootExternal,"a1.mp3")
Atask.PublishProgress(203) ' 202 ro mifrestim be method OnProgressUpdate ta ui ro taqir bedim

Return Null
End Sub

Sub task_OnProgressUpdate(Progress As Int)
	Select Progress
		Case 201
			ToastMessageShow("download ax anjam shod",False)
			Activity.SetBackgroundImage(LoadBitmap(File.DirInternal,"pic1.jpg"))
		Case 202
			ToastMessageShow("download data az php ham anjam shod",False)
		Case 203	
				ToastMessageShow("download audio ham anjam shod va file copy shod",False)	
	End Select
End Sub

Sub task_OnPostExecute(Result As Object)
	Log("tamame kar hae task anjam shod va task baste shod")
End Sub

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

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

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...