انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: abbasalim در 21 شهریور 1392، 10:38 قظ
-
بنام خدا
سلام
دوستان کسی در این رابطه کار کرده بتونه کمکم کنه؟
من کلی مثال داخل اینترنت پیدا کردم ولی از دم همشون یه جاییش ارور میداد :'(
یه مثال خیلی خلی ساده میخوام اگه بشه (اگه فارسی هم توش پشتیبانی بشه بهتر ::))
-
دقیقاً چه چیزی نیاز دارید ؟
ساخت یک شئ JSON ؟
دریافت JSON (از وب سرویس) و Parse کردن اون ؟
کلاً پیچیدگی خاصی نداره، برای ایجاد شئ JSON کافی یه دسترسی از این شئ ایجاد کنید و بعد با متد put عناصر رو بهش اضافه کنید.
برای پارس کردن هم متد get مورد استفاده قرار میگیره.
حالا شما بفرمایید نیازتون چی هست تا بشه بهتر راهنماییتون کرد
-
ببینید من این دوتاکد رو دارم :
<?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 امتحان می کنم کار میکنه
نمیدونم باید چیکار کنم :'(
-
حل شدباید از asyntask استفاده می کردم
فقط نمیدونم چطور باید asyntask یه مقدار return کنم :'(
-
سلام
میخواستم بگم که باید از آسینک تسک استفاده کنید که پیامتونو دیدم
اصولا متد ها مقادیر رو برمیگردونند و آسینک تسک یک کلاس هست
بستگی داره کجا بخواین اصتفاده کنید و با اون مقدار به دست آومده چی کار کنید
متد اجرایی این کلاس میتونه یک مقدار رو برگردونه که به "آنپست اگزکیوت" میره از آنجا میتونید ازش استفاده کنید. که میشه مثلا مقادیر یه لیست را آپدیت کنید
اما اگر بخوایید مثلا تغییراتی در رابط کاربری بدید حتما با ارور مواجه میشید. که اون به خاطر مدیریت ترد های اندرویده
که باید از یه "هندلر" استفاده کنید!
-
استفاده ;)
ممنون مشکلم حل شد خودش return داره
-
تو اندروید 4 اجازه ی برقراری ارتباط با اینترنت در ترد اصلی رو ندارید، علاوه بر اینکه استفاده از AsyncTask خیلی خوب هست، اندروید 4 هم شما رو مجبور به انجام اینکار می کنه.
اگر AsyncTask رو بصورت کلاس داخلی در اکتیویتی تعریف کنید راحت تر میتونید با ترد اصلی (و اون اکتیویتی) ارتباط برقرار کنید، اما اگر بنا به دلایلی نیاز باشه کلاس AsyncTask جداگانه و خارج از اکتیویتی تعریف بشه، استفاده از Interface میتونه راه حل مناسبی برای برقراری ارتباط بین این کلاس ها باشه