رفتن به مطلب

دریافتAssocNet


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

AssocNet

مشاهده فایل

کتابخونه ای جهت دسترسی سریع و آسون به اینترنت. این کتابخونه رو زمانی ساختم که وسط کد نویسی یه برنامه سفارشی مجبور شدم کدهای php و خروجی جیسون اون رو تغیر بدهم.که ساخت این کتابخونه مشکل رو کمتر نمود.

این کتابخونه رو از ترکیب موارد زیر ساخته ام

  • Okhttp
  • Volley
  • Associative

فواید

  • جایگزین مناسبی برای httputils
  • ساده تر از volley
  • راه اندازی سریعتر از کتابخونه های اینترنت دیگر
  • و در نهایت مانند کتابخونه های دیگرم از متدهای اضافی استفاده نکردم تا کارکردی ساده داشته باشه
  • با وجود استفاده از okhttp قدرت مناسبی هم داره

آموزش کار با این کتابخونه در قسمت کتابخونه های انجمن قرار خواهد گرفت

«موفق باشید.»


 

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

Associative

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

داده های جیسون معمولا شامل مقادیر رشته ای - آرایه ای و یا آبجکت هستند. فرض کنید هر سه آنها به این ترتیب دریافت شده است

{ "string":"example",


"array":[ 
{ "id": "1", "name": "mehdi", "family": "izadi","city": "city_1" } , 
{ "id": "2", "name": "nima","family": "ghobadi", "city": "city_2" }],


"object":{"id":"1","name":"amin"}
}

خب در برنامه برای واکاوی هر کدام به طریق زیر عمل خواهیم کرد

رشته:

Dim ass As Assoc
ass.Initialize(json)
ass.Get("string")

آرایه:

Dim ass As Assoc
ass.Initialize(json)
ass.Get("array,0,id")

آبجکت:

Dim ass As Assoc
ass.Initialize(json)
ass.Get("object,name")

به این ترتیب گرفتن اطلاعات جیسون براحتی و در یک خط انجام خواهد شد.

نکته: چنانچه مقدار درخواستی شما در جیسون نباشد مقدار Null برگردانده می شود.که با یک شرط می شود آن را تنظیم کرد

«موفق باشید.»

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

آپلود فایل

برای آپلود فایل در این کتابخونه باید از ساب Upload استفاده کنید که به روش زیر بکار می رود

ir.Upload("http://example.com",File.DirRootExternal,"input.png",1000)

آرگومان آخر که عدد 1000 نوشتم فقط شناسه درخواست است که در هنگام بازگشت نتیجه می توان با آن نوع درخواست خود رو متوجه شد. والبته هر عدد دیگری می تواند باشد. در این کتابخونه امکان ارسال 8 درخواست همزمان به سرور وجود دارد که همین آرگومان هر یک را مشخص خواهد نمود.

نتیجه درخواست

در صورت که ارتباط با سرور به درستی صورت پذیرد رویداد Finish  مقادیر برگشتی را به ما می دهد مثلا

Sub AssocNet_Finish(str As String,id As Int)
	Select id
		Case 1000
			Msgbox(str,id)
	End Select
End Sub

و در هنگام خطا رویداد زیر

Sub AssocNet_Error(str As String,id As Int)
	ToastMessageShow(str,False)
End Sub

کد PHP مثال

<?php
if(isset($_GET['FileName'])){
	$PostData = file_get_contents("php://input");
	$File = fopen($_GET['FileName'],"wb");
	fwrite($File, $PostData); 
	fclose($File);
	echo "uploaded file";
}
?>

نام فایل ارسالی شما بوسیله $_GET['FileName'] قابل استفاده می باشد.

«موفق باشید.»

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

  • 2 ماه بعد...

سلام امین جان 
ممکنه نسخه جدید این کتابخونه رو قرار بدی و ملحقات لازم رو ذکر کنی که به چه کتابخونه هایی کنارش نیاز هست 
من بعد از به روزرسانی نسخه جدید با اررور در این کتابخونه مواجه میشم
با تشکر

 

ارور در زمان کامپایل هست 

 

B4A version: 6.80
Parsing code.    (0.02s)
Compiling code.    (0.28s)
Compiling layouts code.    (0.44s)
Organizing libraries.    (3.33s)
Generating R file.    (0.98s)
Compiling generated Java code.    (5.04s)
Convert byte code - optimized dex.    Error
UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: Lokio/AsyncTimeout$1;
	at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:122)
	at com.android.dx.dex.file.DexFile.add(DexFile.java:161)
	at com.android.dx.command.dexer.Main.processClass(Main.java:615)
	at com.android.dx.command.dexer.Main.processFileBytes(Main.java:570)
	at com.android.dx.command.dexer.Main.access$2(Main.java:546)
	at com.android.dx.command.dexer.Main$2.processFileBytes(Main.java:514)
	at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
	at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
	at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
	at com.android.dx.command.dexer.Main.processOne(Main.java:537)
	at com.android.dx.command.dexer.Main.processAllFiles(Main.java:449)
	at com.android.dx.command.dexer.Main.runMonoDex(Main.java:236)
	at com.android.dx.command.dexer.Main.run(Main.java:206)
	at com.android.dx.command.dexer.Main.main(Main.java:179)
	at com.android.dx.command.Main.main(Main.java:103)
1 error; aborting

اگر تیک کتابخونه okhttp رو بردارم میره تو برنامه و در قسمت لوگ 
خطای قرمز رنگی میده با این محتوا

 


panel_register_initialize (java line: 185)
java.lang.NoClassDefFoundError: okhttp3.OkHttpClient$Builder
	at anywheresoftware.b4h.okhttp.OkHttpClientWrapper.sharedInit(OkHttpClientWrapper.java:112)
	at anywheresoftware.b4h.okhttp.OkHttpClientWrapper.Initialize(OkHttpClientWrapper.java:77)
	at ir.amin.mn.assocnet._initialize(assocnet.java:94)
	at police.tiser.question.tabletgroupdeveloper.panel_register._initialize(panel_register.java:185)
	at police.tiser.question.tabletgroupdeveloper.master._activity_create(master.java:551)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:515)
	at anywheresoftware.b4a.BA.raiseEvent2(BA.java:179)
	at police.tiser.question.tabletgroupdeveloper.master.afterFirstLayout(master.java:102)
	at police.tiser.question.tabletgroupdeveloper.master.access$000(master.java:17)
	at police.tiser.question.tabletgroupdeveloper.master$WaitForLayout.run(master.java:80)
	at android.os.Handler.handleCallback(Handler.java:733)
	at android.os.Handler.dispatchMessage(Handler.java:95)
	at android.os.Looper.loop(Looper.java:136)
	at android.app.ActivityThread.main(ActivityThread.java:5001)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:515)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
	at dalvik.system.NativeStart.main(Native Method)

با تشکر

 

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

در در 1395/11/13, 05:54:23، advisor گفته است :

آپلود فایل

برای آپلود فایل در این کتابخونه باید از ساب Upload استفاده کنید که به روش زیر بکار می رود


ir.Upload("http://example.com",File.DirRootExternal,"input.png",1000)

آرگومان آخر که عدد 1000 نوشتم فقط شناسه درخواست است که در هنگام بازگشت نتیجه می توان با آن نوع درخواست خود رو متوجه شد. والبته هر عدد دیگری می تواند باشد. در این کتابخونه امکان ارسال 8 درخواست همزمان به سرور وجود دارد که همین آرگومان هر یک را مشخص خواهد نمود.

نتیجه درخواست

در صورت که ارتباط با سرور به درستی صورت پذیرد رویداد Finish  مقادیر برگشتی را به ما می دهد مثلا


Sub AssocNet_Finish(str As String,id As Int)
	Select id
		Case 1000
			Msgbox(str,id)
	End Select
End Sub

و در هنگام خطا رویداد زیر


Sub AssocNet_Error(str As String,id As Int)
	ToastMessageShow(str,False)
End Sub

کد PHP مثال


<?php
if(isset($_GET['FileName'])){
	$PostData = file_get_contents("php://input");
	$File = fopen($_GET['FileName'],"wb");
	fwrite($File, $PostData); 
	fclose($File);
	echo "uploaded file";
}
?>

نام فایل ارسالی شما بوسیله $_GET['FileName'] قابل استفاده می باشد.

«موفق باشید.»

امین جان سلام ممکنه با نسخه جدید بیسیک کنترل کنید 
فکر میکنم مشکل داره

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

  • 2 ماه بعد...
در در 1396/01/19, 11:23:29، arastooms گفته است :

امین جان سلام ممکنه با نسخه جدید بیسیک کنترل کنید 
فکر میکنم مشکل داره

چک کردم کتابخونه با کتابخونه های زیر سازگاره اونا رو از بیسیک قدیم کپی و در کنار کتابخونه های دیگرتون قرار بدین

okhttp-2.4.0
okio-1.4.0

«موفق باشید.»

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

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .
توجه: مطلب ارسالی شما پس از تایید مدیریت برای همه قابل رویت خواهد بود.

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

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

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