انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


ارائه ۲۴٫۱۰ اوبونتو منتشر شد 🎉

نویسنده موضوع: اندروید + json  (دفعات بازدید: 2533 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین abbasalim

  • High Sr. Member
  • *
  • ارسال: 642
  • جنسیت : پسر
  • http://esfandune.ir/
    • اسفندونه
اندروید + json
« : 21 شهریور 1392، 10:38 ق‌ظ »
بنام خدا
سلام
دوستان کسی در این رابطه کار کرده بتونه کمکم کنه؟
من کلی مثال داخل اینترنت پیدا کردم ولی از دم همشون یه جاییش ارور میداد  :'(

یه مثال خیلی خلی ساده میخوام اگه بشه (اگه فارسی هم توش پشتیبانی بشه بهتر ::))

آفلاین Nevercom

  • Jr. Member
  • *
  • ارسال: 90
  • جنسیت : پسر
    • وبلاگ
پاسخ : اندروید + json
« پاسخ #1 : 21 شهریور 1392، 03:53 ب‌ظ »
دقیقاً چه چیزی نیاز دارید ؟
ساخت یک شئ JSON ؟
دریافت JSON (از وب سرویس) و Parse کردن اون ؟

کلاً پیچیدگی خاصی نداره، برای ایجاد شئ JSON کافی یه دسترسی از این شئ ایجاد کنید و بعد با متد put عناصر رو بهش اضافه کنید.
برای پارس کردن هم متد get مورد استفاده قرار میگیره.
حالا شما بفرمایید نیازتون چی هست تا بشه بهتر راهنماییتون کرد

آفلاین abbasalim

  • High Sr. Member
  • *
  • ارسال: 642
  • جنسیت : پسر
  • http://esfandune.ir/
    • اسفندونه
پاسخ : اندروید + json
« پاسخ #2 : 21 شهریور 1392، 05:39 ب‌ظ »
ببینید من این دوتاکد رو دارم :
<?php
 
$response 
= array();
$posts = array();
 
$posts[] = array('number' => 20);
$response['result'] = $posts;
echo 
json_encode($response);
 
?>


و جاوا:

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("Web Address");
 
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
 
BufferedReader br = new BufferedReader(new InputStreamReader(httpEntity.getContent()));
int res = 0;
if (br != null) {
    StringBuilder sb = new StringBuilder();
    int ch = 0;
    while ((ch = br.read()) != -1)
        sb.append((char) ch);
    JSONObject json = new JSONObject(sb.toString());
    JSONArray jsonArray = json.getJSONArray("result");
    res jsonArray.getJSONObject(0).getInt("number");
}
br.close();
return res;


مشکلی نداره به جز اینکه در اندروید 4 کار نمیکنه در اندروید 2.3 امتحان می کنم کار میکنه
نمیدونم باید چیکار کنم :'(

آفلاین abbasalim

  • High Sr. Member
  • *
  • ارسال: 642
  • جنسیت : پسر
  • http://esfandune.ir/
    • اسفندونه
پاسخ : اندروید + json
« پاسخ #3 : 21 شهریور 1392، 10:01 ب‌ظ »
حل شدباید از asyntask استفاده می کردم
فقط نمیدونم چطور باید asyntask  یه مقدار return کنم :'(
« آخرین ویرایش: 21 شهریور 1392، 11:14 ب‌ظ توسط abbasalim »

آفلاین سجاد !

  • Jr. Member
  • *
  • ارسال: 50
  • جنسیت : پسر
    • کدرز
پاسخ : اندروید + json
« پاسخ #4 : 21 شهریور 1392، 11:57 ب‌ظ »
سلام
میخواستم بگم که باید از آسینک تسک استفاده کنید که پیامتونو دیدم

اصولا متد ها مقادیر رو برمیگردونند و آسینک تسک یک کلاس هست

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

متد اجرایی این کلاس میتونه یک مقدار رو برگردونه که به  "آنپست اگزکیوت" میره از آنجا میتونید ازش استفاده کنید. که میشه مثلا مقادیر یه لیست را آپدیت کنید

اما اگر بخوایید مثلا تغییراتی در رابط کاربری بدید حتما با ارور مواجه میشید. که اون به خاطر مدیریت ترد های اندرویده

که باید از یه "هندلر" استفاده کنید!

آفلاین abbasalim

  • High Sr. Member
  • *
  • ارسال: 642
  • جنسیت : پسر
  • http://esfandune.ir/
    • اسفندونه
پاسخ : اندروید + json
« پاسخ #5 : 22 شهریور 1392، 12:05 ق‌ظ »
استفاده ;)

ممنون مشکلم حل شد خودش return داره

آفلاین Nevercom

  • Jr. Member
  • *
  • ارسال: 90
  • جنسیت : پسر
    • وبلاگ
پاسخ : اندروید + json
« پاسخ #6 : 22 شهریور 1392، 02:43 ق‌ظ »
تو اندروید 4 اجازه ی برقراری ارتباط با اینترنت در ترد اصلی رو ندارید، علاوه بر اینکه استفاده از AsyncTask خیلی خوب هست، اندروید 4 هم شما رو مجبور به انجام اینکار می کنه.

اگر AsyncTask رو بصورت کلاس داخلی در اکتیویتی تعریف کنید راحت تر میتونید با ترد اصلی (و اون اکتیویتی) ارتباط برقرار کنید، اما اگر بنا به دلایلی نیاز باشه کلاس AsyncTask جداگانه و خارج از اکتیویتی تعریف بشه، استفاده از Interface میتونه راه حل مناسبی برای برقراری ارتباط بین این کلاس ها باشه