نمایش نتایج 1 تا 40 از 118

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

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #8

    نقل قول: آموزش ساخت وب سرویس و استفاده در اندروید

    جلسه ی هفتم دریافت داده از وب سرویس در اندروید : قسمت دوم

    وارد بحث گرفتن داده ها از وب سرویس ایجاد شده میشویم .
    یکی از دوستان بپرسیده بود که من زمانی که در دیتابیسم از فارسی استفاده میکنم به شکل ؟؟؟ نشون داده میشود .
    خب در اینجا میخواهیم یکی از فنون آخر بروسلی رو به شما بگم برای رفع این مشکل کافی است بعد از connection تون به صورت زیر عمل کنید



    <?php

    $con = mysqli_connect("localhost","root","","teldb");

    if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    mysqli_set_charset($con,"UTF8");

    عبارت mysqli_set_charset داده های دیتابیس را به untf8 تبدیل میکند .
    اگر خروجی شما به شکل unicode در آمد مشکلی وجود ندارد چرا که مفسر آن را به این شکل تبدیل کرده است و در اندروید خواهی دید . که داده ها به صورت درست ظاهر میشود .

    تا اینجا دیدم که چحوری توانستیم به وب سرویسمان وصل بشیم .و توسط status code برابر با 200 متوجه شدیم که ارتباط موفقیت آمیز بوده است .
    حال داده هایی را که در دیتابیس ذخیره کردیم میخواهیم مثلاً در یک textview نمایش دهیم .


    پس از قبل داشتیم :


    int code = response.getStatusLine().getStatusCode();
    Log.i("Status Code", code + "");




    در این قسمت ما نیاز به توابعی از HttpResponse با نام getEntity() که در واقع دسترسی به محتوای سایت را برای ما امکان میسازد چیزی شبیه getintent خودمان است و برای اینکه محتویات سایت را ببینیم بایستی متد getcontent که از جنس inputstream هست را فرا بخوانیم .

    پس به زبان کدی داریم

    int code = response.getStatusLine().getStatusCode();

    if (code == 200) {

    response.getEntity().getContent();
    }




    برای آنکه آن این محتوی را داخل ui بیاوریم طبیعتاً بایستی آن را به string تبدیل کنیم . مقدار getcontent(); از جنس inputstream است و تبدیل کردن آن به string نیازمند کار با فایل در جاواست که همگی در آن استادند .اگرم کسی بلد نبود میتونه بصورت کلیشه ای از متد زیر استفاده کنه :


    String StreamToString(InputStream in)
    {
    BufferedReader r = new BufferedReader(new InputStreamReader(in));
    StringBuilder total = new StringBuilder();
    String line;
    try
    {
    while ((line = r.readLine()) != null) {
    total.append(line);
    }
    return total.toString();
    }
    catch (IOException e)
    {
    // TODO Auto-generated catch block
    e.printStackTrace();
    return "";
    }

    }


    پس در نهایت داریم :

    private String result;

    //=============def class=======

    if (code == 200) {

    result = StreamToString(response.getEntity().getContent());
    Log.d("GetText", result);
    }



    الان همینو در textview مربوطه settext کنید چه میبینید ؟ خروجی ما چاپ می شود .اگه برنامه کرش کرد یا permission ندادید یا اینکه باید کدهای net را تو thread بذارید . حال میخواهیم داده ها را به تفکیک بگیریم .
    داده ای که ما داریم به اندروید میفرستیم . به شکل

    [{"id":"1","name":"ehsan","family":"harani","tel ":" 09123456789","address":"Address1"},{"id":"2","name ":"Site","family":"BarenameNevis","tel":"09197 8345 67","address":"mir mojtahedi"}]

    می باشد .
    که ما آن را گرفتیم و در یک string result نمایش دادیم .

    این داده ابتدا با [ و در پایان با ] نشان داده شده است .و هر عضو آن با , جدا شده به این نوع داده JSONArray میگویند . هر عضو داده با } شروع و با { تمام میشود و هر عضو به صورت key-value پر میشود و با , از هم جدا میشود به این نوع داده که بصورت {"key1":"value1","key2":"value2"} نمایش داده میشود JSONObject میگوند . پس JSONArray آرایه ای است که هر عضو آن یک JSONObject است که مابین [] قرار میگیرد .

    اگر پردازش و ظاهر این خروجی json برای شما گیج کننده است میتوانید تو گوگل سرچ کنید json viewer آنگاه هزاران سایت برای شما باز میشود با انتخاب هر کدام شما وارد سایتی میشوید که میتوانید این text ناخوانا را بصورت گرافیکی و خوانا مشاهده نمایید .در اینجا خواهی دید که کاراکترهایی که بصورت unicode در پنجره برازر شما بوده به شکل فارسی رویت میشود .


    حالا که با json آشنا شدیم برای تفکیک داده ی string result از آن استفاده میکنیم .
    خود من میخواهم تمام داده ها را در یک string بریزم شما میتونید آن را در دیتابیس بریزید یا هرجوری که میخواین آن را ذخیره کنید .
    من برای اینکار از متد زیر استفاده میکنم .


    public String getData() {

    final StringBuilder sb = new StringBuilder();
    try {
    JSONArray array = new JSONArray(result);
    for (int i = 0 ; i < array.length() ; i++){
    JSONObject object = array.getJSONObject(i);
    sb.append(object.getLong("person_id"));
    sb.append(object.getString("person_name"));
    sb.append(object.getString("person_family"));
    sb.append(object.getString("person_tel"));
    sb.append(object.getString("address"));


    }
    return sb.toString();

    } catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    return null;

    }


    حالا من اینو متد را در یک کنترل تکست ویو settext میکنم . بازم میگم دیگه این قسمت سلیقه ای هر جوری که خواستید میتونید رفتار کنید میتونید برای زیباتر شدن یک structure بسازید و داده ها رو تو دیتابیس بریزید . و مثلاً هر قسمت رو تو یک cell در لیست ویو لود کنید .

    بحث گرفتن داده رو گفتیم فقط میمونه که بحثه ارسال آن نیز را بگیم .

    آخرین ویرایش به وسیله harani : یک شنبه 01 شهریور 1394 در 08:08 صبح

تاپیک های مشابه

  1. آموزش ساخت plug in با استفاده از Vb.net and C#‎.net
    نوشته شده توسط ghafoori در بخش مقالات مرتبط با Microsoft .Net Framework
    پاسخ: 26
    آخرین پست: شنبه 27 اردیبهشت 1393, 13:55 عصر
  2. آموزش: دانلود فیلم فارسی آموزش ساخت و استفاده از DLL در سی شارپ
    نوشته شده توسط m.webgard در بخش C#‎‎
    پاسخ: 7
    آخرین پست: پنج شنبه 29 اسفند 1392, 23:13 عصر
  3. آموزش: آموزش ساخت آمار سایت با استفاده از گلوبال وذخیره در دیتابیس
    نوشته شده توسط sasanrstm در بخش ASP.NET Web Forms
    پاسخ: 10
    آخرین پست: چهارشنبه 04 دی 1392, 20:38 عصر
  4. آموزش: آموزش ساخت اسلاید شو با استفاده از WebMethod
    نوشته شده توسط fakhravari در بخش ASP.NET Web Forms
    پاسخ: 7
    آخرین پست: پنج شنبه 23 آبان 1392, 20:00 عصر
  5. آموزش:*ساخت فایل XML از روی SQL برای استفاده در asp:menu*
    نوشته شده توسط maxpayn2 در بخش ASP.NET Web Forms
    پاسخ: 11
    آخرین پست: یک شنبه 28 بهمن 1386, 19:42 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •