رفتن به مطلب

OkHttp جایگزین کتابخانه Http و نکته مهم در مورد HttpUtils2


مهدی ایزدی

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

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

خب داشتم توی سایت مرجع میچرخیدم که به یه پست برخوردم . گفتم برای شما هم قرار بدم...

 

کتابخانه http بر پایه ی ورژن اندروید و Apache HttpClient هست و متاسفانه گوگل خیلی وقته که اپدیت کردن این SDK این رو متوقف کرده !!!

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

 

توجه کنید که اگه شما از کتابخانه HttpUtils2 استفاده میکنید ؛ این کتابخانه هم برپایه کتابخانه http است

 

کتابخانه OkHttp بر پایه OkHttp SDK است : http://square.github.io/okhttp/

این کتابخانه پشتیبانی میکنه از امکانات جدیدی مثل : SSL , SNI , SPDY , درخواست Patch و همچنین عملکرد بهتری رو داره !

این کتابخانه دارای شیء زیر است :

OkHttpClient

OkHttpResponse

OkHttpRequest

 

ویژگی های زیر در حال حاضر در دسترس نیستند :

Digest authentication و Proxy

 

این کتابخانه به اندروید 2.3 به بالا نیاز دارد !!!

 

نسخه فعلی 0.9 است و به عنوان یک نسخه بتا در نظر گرفته شده است

همچنین یک نسخه اصلاح شده از کتابخانه HttpUtils2 که نسخه 2.10 است رو براتون پیوست کردم

اگر میخواهید از کتابخانه HttpUtils2 استفاده کنید باید کتابخانه رو دانلود و در محل کتابخانه هاتون کپی کنید  :)

 

نسخه ای از OkHttp که براتون پیوست کردم نسخه 1.00 هست و از Digest authentication پشتیبانی میکنه  :tashvigh: 

 

فایل های لازمه رو براتون پیوست کردم  :write:

OkHttp(AnswerCenter.IR).zip

HttpUtils2(AnswerCenter.IR).zip

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

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

خب داشتم توی سایت مرجع میچرخیدم که به یه پست برخوردم . گفتم برای شما هم قرار بدم...

با سلام و تشکر از زحمات شما

لطفا توابع putstring رو هم به کلاس httpjob اضافه کنید، واسه زمانی که بجای ارسال کوئری به یک صفحه php، بخواهیم آنرا مستقیم به یک اسکریپت ارسال کنیم

Public Sub PutString(Link As String, Text As String)
	PutBytes(Link, Text.GetBytes("UTF8"))

End Sub
Public Sub PutBytes(Link As String, Data() As Byte)
	
	req.InitializePut2(Link, Data)
	req.Timeout=25000
	CallSubDelayed2(HttpUtils2Service, "SubmitJob", Me)
End Sub

باز هم ممنون

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

آره http دپریکیت شده.

من توی اتدروید استودیو دارم از urlconnection استفاده میکنم که سرعت بالاتری هم تویه برقراری ارتباط داره.

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

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

پسورد فایلا چیه مهدی

basic4android.org کار نمیگنه.

پسورد همیشگی عوض شده؟

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

  • 3 هفته بعد...

مهدی جان httpUtils2 ورژن 2.01 رو ارسال کردی به جای ورژن 2.10
جدیدشو اگه ممکنه بزار.
ممنون.

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

مهدی جان httpUtils2 ورژن 2.01 رو ارسال کردی به جای ورژن 2.10

جدیدشو اگه ممکنه بزار.

ممنون.

نه ورژن درستی رو فرستادی.

کتابخانه هایی که همراه بیسیک 5.50 منتشر شده شامل httputils2.01 میشه.

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

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

متد http که توی ورژن قبلیه httpUtils2 بود و از apache استفاده میکرد خیلی سرعت پایینی داشت.
تا جایی که به فکر افتاده بودم با urlconnection که خود گوگل پیشنهاد داده یه کتابخونه بنویسم برا بیسیک اما الان این کتابخونه رو کامل تست کردم واقعا سرعتش عالیه برا اینترنت 2G که محدودیت ما ایرانی هاست.
نیازی هم به مهاجرت نیست فقط همونطور که توی پست بالا گفتم ورژن جدید کتابخونه httpUtils2 رو آپدیت کنین.
مهدی جان دست گلت درد نکنه که اینو رسوندی به بچه های انجمن. از طرف خودم و بقیه یه خسته نباشید جانانه بهت میگم.

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

سلام استاد خلیلی

یعنی ورژن جدید httputills2 ردیفه؟

مشکلی نداره؟

میخواستم امشب بگیرم این (باشه http رو)

اگه میتونید این httputills نسخه جدیدو بذارید

مرسی

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

سلام استاد خلیلی

یعنی ورژن جدید httputills2 ردیفه؟

مشکلی نداره؟

میخواستم امشب بگیرم این (باشه http رو)

اگه میتونید این httputills نسخه جدیدو بذارید

مرسی

 

ورژن 2.10 تو پست اول همین تاپیک که مهدی گذاشته هست.

هیچ مشکلی نداره وچون از okhttp استفاده کرده به جای apache سرعت بهتری هم داره.

فقط همون طور که گفتم برای این که این کتابخانه درست کار کنه باید برید جایی که بیسیک 4 اندروید رو نسب کردید و به پوشه ی Libraries اضافه کنید.

چون ورژن قبلی این کتابخونه اونجا هست و برای استفاده اولویت داره.

بعد از اضافه کردن هم داخل IDE وقتی تیکشو میزنید دقت کنید که ورژن باید 2.10 باشه.

اگه ورژنش پایین تر باشه مثلا 2.01 یعنی مشکل داره هنوز.

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

  • 2 هفته بعد...

سلام

ممنون از آقای ایزدی

فقط سوالم اینه که با اضافه و جایگزین کردن کتابخانه های جدید، کدهایی که قبلا نوشتیم، و از کتابخانه httputils2 قبلا استفاده کردیم رو نباید تغییری بدیم؟ ضمنا به جز جایگزین کردن کتابخانه، تغییر دیگه ای مثل جایگزین کردن سرویس مدول نباید انجام بشه؟!

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

سلام ممنون از آقای ایزدی

درود

خواهش میکنم

 

فقط سوالم اینه که با اضافه و جایگزین کردن کتابخانه های جدید، کدهایی که قبلا نوشتیم، و از کتابخانه httputils2 قبلا استفاده کردیم رو نباید تغییری بدیم؟

خیر

 

 

ضمنا به جز جایگزین کردن کتابخانه، تغییر دیگه ای مثل جایگزین کردن سرویس مدول نباید انجام بشه؟!

بسته به عملکرد خودتون داره . در حالت عادی خیر

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

همینجا از استاد خلیلی عزیز هم تشکر میکنم که توضیحات مکمل رو در مورد کتابخانه های پیوست شده دادند :gol:

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

  • 3 هفته بعد...

سلام جناب ایزدی

ببخشید تاپیک قدیمی بالامیاریم!

من قبلا سورس largefiledownload استفاده می کردم و مشکلی نداشتم

اما ظاهرا از زمانی که از کتابخونه های جدید دارم استفاده می کنم (ضمنا مدول های سورس مربوطه رو هم جایگزین کردم) ، به ارور می خورم

java.lang.RuntimeException: Object should first be initialized (CountingOutputStream).

خطی هم که بهش گیر میده خطی هست که با ستاره مشخص کردم

Sub JobDone(job As HttpJob)
	jobs.Remove(job.JobName)
	Dim jt As JobTag = job.Tag
	If jobs.Size = 0 Then EndTimer
	If job.Success Then
		CallSubDelayed3(jt.Data.Target, jt.Data.EventName & "_Progress", _   *********
				jt.CountingStream.Count, jt.Total)
		CallSubDelayed2(jt.Data.Target, jt.Data.EventName & "_Complete", _
				job)
	Else
		Log(job.ErrorMessage)
		CallSubDelayed2(jt.Data.Target, jt.Data.EventName & "_Complete", _
				job)
	End If
End Sub

راهنمایی بفرمایید

تشکر

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

اساتید جواب نمیدن؟

یادم رفت این رو هم بگم:

من هم زمان از دو متغیر از نوع های httpjob و DownloadData که مربوط از سورس largefiledownload هست دارم توی پروژه م استفاده می کنم

لطفا یکی جواب ما رو بده دیگهههههه!!! :(

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

سلام.من چجوری میتونم یک برنامه آنلاین درست کنم.منظورم فقط دیتابیس نیستا.مثلا یک برنامه مانند اینd0dy_photo_2016-01-01_03-00-49.jpg

 

 

که بتونیم اون رو کنترل کنیم و گزینه هاش رو تغییر بدیم به صورت انلاین.دیتابیسی که با sqlit ساخته میشود فقط متن هست و عکس رو که انتخاب می کنم تو برنامه نشون نمیده.لطفا راهنمایی کنید

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

کسی نیست پاسخ بده؟؟؟

تاپیک جدا بزنید واسه سوالتون همیچنین میتونید با جستجو مطالب مشابه را پیدا کنید

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

  • 1 سال بعد...

سلام. الان ما از نسخه جدید HttpUtils2 یعنی ورژن 2.10 استفاده کنیم یا خود okhttp2  که تو نسخه های جدید پیشفرض موجوده؟

ضمنا نسخه های  2 چه تفاوتی داره؟  جدیدتره یا امکاناتش متفاوته؟

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

  • 3 هفته بعد...

okHttp و okHttpUtils2 نیاز به thread نداره و خودش ایجاد میکنه؟ یعنی تداخلی در کار برنامه ایجاد نمیکنه یا خودمون باید براش thread درست کنیم؟

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

در 11 ساعت قبل، rasool.g گفته است :

okHttp و okHttpUtils2 نیاز به thread نداره و خودش ایجاد میکنه؟ یعنی تداخلی در کار برنامه ایجاد نمیکنه یا خودمون باید براش thread درست کنیم؟

گمون نکنم ترد واسش تعریف شده باشه.

روی Main Thread  کارش رو انجام میده. ( البته خیلی وقته از از برنامه نویسی دورم، شاید هم تعبیه شده باشه).

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

بایگانی شده

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

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

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