رفتن به مطلب

retrofit قسمت اول : ارسال ایمن داده ها به سرور با متد post


محمدرضا شاهپیری

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

به نام خدا 

سلام عرض میکنم خدمت همه دوستان عزیز و آرزوی موفقیت برای همه ♥  :give_rose:

یه آموزش فوقلاده ویژه رو براتون تدارک دیدم

همونطور که میدونید امروزه امنیت و سرعت تو برنامه های اندروید  از مولفه ها ی کلیدی برای موفقیت برنامه هستند و این مولفه ها وقتی برنامه با سرور و پیچیدگی های اونم درگیره اهمیتشون چندین برابر میشه

کتابخونه retrofit یکی از کتابخونه هایی هست که موارد ذکر شده رو تو حد خیلی بالایی ارائه میده و بسیاررر میتونه برای ایمن شدن و افزایش کارایی برنامه مفید باشه

تو این کتابخونه کلا نحوه ارتباط با سرور تغییر کرده و اینتر فیس ها نقش اساسی و کلیدی رو تو این برنامه ایفا میکنند و درواقع پایه ارتباط رو تشکیل میدن

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

اولین قسمت رو به متد پست پرداختم و تو این آموزش میبینید که چجوری میشه داده ها رو به سرور ارسال کرد.

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

این شما و این هم آموزش

http://s1.picofile.com/file/8262249634/Reetrofit_part1.zip.html

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

مراقب زیبایی هاتون باشید مارو هم دعاکنید انجمن رو هم فراموش نکنید  پسند هم دونت فراموش :malih:  ♥   :answercenter:

یا حق

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

با تشکر ویژه از استاد شاهپیری عزیز

سومین دانلود رو خودم انجام دادم  :53:

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

سلام

خسته نباشی محمدرضا جان ♥

بسیار عالی ♥

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

داداش من هرکاری میکنم نمیتونم کتابخانه convert-gson رو کامپایل کنم (من که نه اندروید استودیو نمیتونه :DD: )

میتونی این کتابخانه رو پیوست کنی؟ :give_rose:

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

مشکلش چیه عزیز؟ کتابخونه بدون هیچ مشکلی باید کامپایل بشه

کدهاتون رو درست میزنید؟ به شکل زیر باید باشه

 compile 'com.squareup.retrofit2:retrofit:2.1.0'
 compile 'com.squareup.retrofit2:converter-gson:2.1.0'
لینک ارسال
به اشتراک گذاری در سایت های دیگر

در در 1395/05/22, 02:39:09، محمدرضا شاهپیری گفته است :

 

مشکلش چیه عزیز؟ کتابخونه بدون هیچ مشکلی باید کامپایل بشه

کدهاتون رو درست میزنید؟ به شکل زیر باید باشه


 compile 'com.squareup.retrofit2:retrofit:2.1.0'
 compile 'com.squareup.retrofit2:converter-gson:2.1.0'

 

آره داداش درست میزدم ولی کتابخانه دومی converter-gson رو نتونستم کامپایل کنم که گشتم پیدا کردم کتابخانه شو دانلود کردم دستی اضافه کردم:دی

 

قسمت دوم ان شاءا... کی آماده میشه؟ منتظرم  :DD:  :give_rose:

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

:fekr:  عجیبه چرا کامپایل نشد

قسمت دوم انشالا سعی میکنم تو همین هفته آماده کنم و خدمت عزیزان ارائه کنم :53:

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

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

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

ببینید من اومدم توی فایل php یه شرط نوشتم که اگه تکراری بود بیاد و خطا بده

خوب توی متد onResponse میاد و اگه اتصال به فایلمون برقرار شد هرخطا یا چیزی بده میگه برابر میشه با isSuccess

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

با response.body().string ریختمش توی یه متغیر اما هرکاری میکنم شرط عمل نمیکنه

حتی tostring هم امتحان کردم نشد

ممنون میشم بگین چطوری باید اینکارو بکنم؟:fekr::give_rose:

 

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

response.body().toString پاسخیه که کتابخونه okhttp میده شما باید  response.body().string  رو بگیرید

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

برای شرط گزاشتن هم خیلی ساده اس که شما یه فایل متنی رو میگیرید مثلا فرض کنیم شما تو سرور کلمه ok رو پرینت یا اکو کردین به صورت زیر میتونید اعتبار سنجیش کنید

 String result=response.body().string();
                    if ("ok".equalsIgnoreCase(result)){
                        // inja kari ke mikhay ro anjam bede
                    }

 

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

  • 1 ماه بعد...

چطور میتونم قبل از ارسال encoding رو روی utf-8 ست کنم؟

بعد از ارسال توی دیتابیس به صورت ؟؟؟؟؟ ذخیره میشن متن های فارسی

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

@Headers({ "Content-Type: application/json;charset=UTF-8"})

@Headers({ "charset=UTF-8"})

این دوتا رو امتحان کن ببین جواب میدن   بعد از post @ بزارشون (یکیشونو بزار)

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

دومی که اصلا میذارم هیچی نمیفرسته

ولی اول 

@Headers({ "Content-Type: application/json;charset=UTF-8"})

رو میذارم میفرسته اما توی دیتابیس ستونا خالی هستن :shok: توی لاگ چاپ میشه اما درست قبل از ارسال لاگ میگیرم

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

فیلدها رو اینجوری بنویس ببن چی میشه

@Field(value = "title", encoded = true) String title

 

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

باز هم خالی میفرسته

 

@FormUrlEncoded
    @POST("contact.php")
    @Headers({"Content-Type: application/json;charset=UTF-8"})
    Call<ResponseBody> contact(@Field(value = "conname",encoded=true) String contname
            , @Field(value = "connum",encoded = true) String contnum);

 

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

کلا فرم رو بی خیال شو  با body کار کن ببین چطو میشه

public interface TaskService {  
    @POST("/tasks")
    Call<Task> createTask(@Body Task task);
}
public class Task {  
    private long id;
    private String text;

    public Task(long id, String text) {
        this.id = id;
        this.text = text;
    }
}
Task task = new Task(1, "my task title");  
Call<Task> call = taskService.createTask(task);  
call.enqueue(new Callback<Task>() {});  

 

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

کد اول رو توی اینترفیس مینویسم 

کد دوم یه کلاس میسازم

کد سوم رو نفهمیدم ماله چیه و کجا استفاده کنم یه توضیح کوچیک بدی ممنون میشم

 

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

کد سوم واسه ارساله دیگه

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

گیج شدم والا

ببین این کد اینترفیس

public interface SendInterface {
@POST("contact.php")
Call<Task> createTask(@Body Task task);
}

این کد Task

public class Task {
    private long id;
    private String conname,connum;

    public Task(long id, String conname,String connum) {
        this.id = id;
        this.conname=conname;
        this.connum=connum;

    }
}

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

public void sendcont(String contname, String contnum) throws Exception{
        Retrofit retrofit=new Retrofit.Builder().baseUrl("http://site.com/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        SendInterface  registerInterface=retrofit.create(SendInterface.class);
        Task task = new Task(1,contname,contnum);
        Call<Task> call = registerInterface.createTask(task);
        call.enqueue(new Callback<Task>() {
            @Override
            public void onResponse(Call<Task> call, Response<Task> response) {

            }

            @Override
            public void onFailure(Call<Task> call, Throwable t) {

            }
        });

 

درسته ؟ غلطه ؟ :sorry:

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

بایگانی شده

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

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

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