Android REST ক্লায়েন্ট, নমুনা?


115

এমনকি যদি এই থ্রেড উত্তরটি স্বীকার করে নিয়েছে, অন্য ধারণা প্রস্তাব দিতে নির্দ্বিধায়, আপনি ব্যবহার বা পছন্দ করেন না


আমি এই নিবন্ধগুলি পূরণ করেছি:

এবং এটি আমাকে আরএসইএসটি ক্লায়েন্টের অ্যাপ্লিকেশনগুলি সম্পর্কে এই Google I / O 2010 ভিডিওতে নিয়ে যায়

এখন থেকে, আমি আমার অ্যাপ্লিকেশন নিয়ামক শ্রেণিতে স্থির উপাদান হিসাবে REST উপাদান তৈরি করছি।

এখন থেকে, আমি মনে করি, আমার প্যাটার্নটি পরিবর্তন করা উচিত। কেউ উল্লেখ করেছেন যে গুগল আইওএসএড অ্যাপ্লিকেশন হ'ল অ্যান্ড্রয়েডে কীভাবে আরএসটি ক্লায়েন্ট লিখতে হয় তার দুর্দান্ত নমুনা। অন্য কেউ বলেছে যে এই উপায়গুলি খুব বেশি জটিল।

সুতরাং, কেউ দয়া করে আমাদের দেখাতে পারেন যে সর্বোত্তম অনুশীলনটি কী? সংক্ষিপ্ত এবং সহজ উপায়ে।
নমুনা ব্যবহারের ক্ষেত্রে আইওএসএড অ্যাপ্লিকেশনটি অত্যন্ত জটিল।


হ্যালো, সাধারণত আমি "ডাব্লুএস" নামে ওয়েব সার্ভিসের জন্য পৃথক প্যাকেজ বিকাশ করি, আমার কাছে "ওয়েবসার্ভিকিলস.জাভা" নামে সাধারণ শ্রেণি রয়েছে class ওয়েব সার্ভিস ইউটিলস.জেভা ক্লাসে ওয়েব পরিষেবা অ্যাক্সেস করার পদ্ধতি রয়েছে। আমি আমার প্রযুক্তি সম্পর্কে সেরা কিনা তা সম্পর্কে নিশ্চিত নই তবে প্রতিবারই আমি অ্যান্ড্রয়েড অ্যাপ্লিকেশনে আমার ডাব্লুএস প্যাকেজটি অনুলিপি করতে পারি, আপনি আমার প্রযুক্তি সম্পর্কে আরও জানতে চাইলে আমাকে জানান।
কেতন পারমার

আমি মনে করি না ইউটিউব কমেন্টারের আরও ভাল বিকল্প আছে। অ্যান্ড্রয়েডের এপিআইগুলির মধ্যে আমাদের কাজ করতে হবে, এমনকি যদি তারা প্রায়শই অত্যধিক জটিল এবং ভার্জিক বাজে কথা বলে।
টিএমএমএম

পার্শ্ব দ্রষ্টব্য হিসাবে, মেকানিকয়েড, অ্যান্ড্রয়েডের জন্য একটি ওপেনসোর্স গ্রহন প্লাগইন একটি সাধারণ ডিএসএল ব্যবহার করে JSON-REST ক্লায়েন্ট জেনারেট করতে পারে, এটি কীভাবে ব্যবহার করতে হয় তার গাইড এখানে পাওয়া যাবে রোবোটোওর্কস / মেকানয়েড- প্লাগইন / সার্ভিস -ক্লায়েন্ট-ডিএসএল (আমি এই প্লাগইনটির লেখক, নির্লজ্জ প্লাগের জন্য দুঃখিত!)
ইয়ান ওয়ারউইক

এটি Android REST ক্লায়েন্ট বাস্তবায়ন শেখার লোকদের পক্ষে খুব সহায়ক হতে পারে। ডবজানসির উপস্থাপনাটি একটি পিডিএফ প্রতিলিপি হয়েছে: drive.google.com/file/d/0B2dn_3573C3RdlVpU2JBWXdSb3c/…
কে জেড

উত্তর:


99

সম্পাদনা 2 (অক্টোবর 2017):

এটি 2017 Just কেবল retrofit ব্যবহার করুন। অন্য কিছু ব্যবহার করার প্রায় কোনও কারণ নেই।

সম্পাদনা করুন:

মূল উত্তরটি এই সম্পাদনার সময় দেড় বছরেরও বেশি পুরানো। যদিও মূল উত্তরে উপস্থাপিত ধারণাগুলি এখনও রয়েছে, অন্য উত্তরগুলি যেমন উল্লেখ করেছে, এখন সেখানে গ্রন্থাগারগুলি রয়েছে যা আপনার পক্ষে এই কাজটি আরও সহজ করে তোলে। আরও গুরুত্বপূর্ণ, এই লাইব্রেরির কয়েকটি আপনার জন্য ডিভাইস কনফিগারেশন পরিবর্তনগুলি পরিচালনা করে।

মূল উত্তরটি রেফারেন্সের জন্য নীচে ধরে রাখা হয়েছে। তবে দয়া করে অ্যান্ড্রয়েডের জন্য বিশ্রামের কিছু ক্লায়েন্ট লাইব্রেরি পরীক্ষা করে দেখুন যে সেগুলি আপনার ব্যবহারের ক্ষেত্রে ফিট করে। নীচে আমি মূল্যায়ন করেছি কিছু লাইব্রেরির একটি তালিকা। এটি কোনও উপায়ে সম্পূর্ণ তালিকা হওয়ার উদ্দেশ্যে নয়।


আসল উত্তর:

Android এ REST ক্লায়েন্ট থাকার বিষয়ে আমার দৃষ্টিভঙ্গি উপস্থাপন করছি। যদিও আমি এটি সর্বোত্তম বলে দাবি করি না :) এছাড়াও নোট করুন যে এটি আমার প্রয়োজনের প্রতিক্রিয়া হিসাবে আমি নিয়ে এসেছি। আপনার ব্যবহারের ক্ষেত্রে এটির দাবি থাকলে আপনার আরও স্তর থাকতে পারে / আরও জটিলতা যুক্ত করতে পারে। উদাহরণস্বরূপ, আমার কাছে স্থানীয় সঞ্চয় নেই have কারণ আমার অ্যাপ্লিকেশনটি কয়েকটি REST প্রতিক্রিয়া হ্রাস সহ্য করতে পারে।

আমার পদ্ধতির AsyncTaskপ্রচ্ছদের নীচে কেবল এস ব্যবহার করে । আমার ক্ষেত্রে, আমি আমার Activityউদাহরণ থেকে এই কার্যগুলি "কল" করি ; তবে স্ক্রিন রোটেশনের মতো ক্ষেত্রে পুরোপুরি অ্যাকাউন্ট করার জন্য আপনি এগুলি Serviceবা অন্য কোনও থেকে কল করতে পছন্দ করতে পারেন ।

আমি সচেতনভাবে একটি এপিআই হতে আমার REST ক্লায়েন্টকে বেছে নিয়েছি। এর অর্থ হ'ল যে অ্যাপ্লিকেশনটি আমার আরএসটি ক্লায়েন্ট ব্যবহার করে তাদের এমনকি বাস্তব আরএসএল ইউআরএল এবং ব্যবহৃত ডেটা ফর্ম্যাট সম্পর্কে সচেতন হওয়া প্রয়োজন।

ক্লায়েন্টের 2 স্তর থাকবে:

  1. শীর্ষ স্তর: এই স্তরটির উদ্দেশ্য এমন পদ্ধতিগুলি সরবরাহ করা যা REST API এর কার্যকারিতা আয়না করে। উদাহরণস্বরূপ, আপনার আরএসটি এপিআইতে প্রতিটি URL এর সাথে সম্পর্কিত আপনার একটি জাভা পদ্ধতি থাকতে পারে (বা দুটিও - জিইটিগুলির জন্য একটি এবং পিওএসটিগুলির জন্য একটি)।
    এটি REST ক্লায়েন্ট API এ প্রবেশের পয়েন্ট। এটি অ্যাপ্লিকেশনটি সাধারণত ব্যবহার করবে এমন স্তর। এটি সিঙ্গলটন হতে পারে, তবে অগত্যা নয়।
    REST কলের প্রতিক্রিয়া এই স্তরটি একটি POJO এ পার্স করে অ্যাপে ফিরে আসে।

  2. এটি নীচের স্তরের AsyncTaskস্তর, যা HTTP ক্লায়েন্ট পদ্ধতিগুলি ব্যবহার করে প্রকৃতপক্ষে চলে যায় এবং সেই REST কল করতে পারে।

তদ্ব্যতীত, AsyncTaskএস এর ফলাফল অ্যাপ্লিকেশনটিতে যোগাযোগ করার জন্য আমি একটি কলব্যাক প্রক্রিয়া ব্যবহার করতে পছন্দ করেছি।

পাঠ্য যথেষ্ট। আসুন এখন কিছু কোড দেখুন। একটি হাইপোটিকাল REST এআইপিআইআরএল নিতে দেয় - http://myhypothetalapi.com/user/profile ile

উপরের স্তরটি দেখতে দেখতে এটির মতো হতে পারে:

   /**
 * Entry point into the API.
 */
public class HypotheticalApi{   
    public static HypotheticalApi getInstance(){
        //Choose an appropriate creation strategy.
    }
    
    /**
     * Request a User Profile from the REST server.
     * @param userName The user name for which the profile is to be requested.
     * @param callback Callback to execute when the profile is available.
     */
    public void getUserProfile(String userName, final GetResponseCallback callback){
        String restUrl = Utils.constructRestUrlForProfile(userName);
        new GetTask(restUrl, new RestTaskCallback (){
            @Override
            public void onTaskComplete(String response){
                Profile profile = Utils.parseResponseAsProfile(response);
                callback.onDataReceived(profile);
            }
        }).execute();
    }
    
    /**
     * Submit a user profile to the server.
     * @param profile The profile to submit
     * @param callback The callback to execute when submission status is available.
     */
    public void postUserProfile(Profile profile, final PostCallback callback){
        String restUrl = Utils.constructRestUrlForProfile(profile);
        String requestBody = Utils.serializeProfileAsString(profile);
        new PostTask(restUrl, requestBody, new RestTaskCallback(){
            public void onTaskComplete(String response){
                callback.onPostSuccess();
            }
        }).execute();
    }
}


/**
 * Class definition for a callback to be invoked when the response data for the
 * GET call is available.
 */
public abstract class GetResponseCallback{
    
    /**
     * Called when the response data for the REST call is ready. <br/>
     * This method is guaranteed to execute on the UI thread.
     * 
     * @param profile The {@code Profile} that was received from the server.
     */
    abstract void onDataReceived(Profile profile);
    
    /*
     * Additional methods like onPreGet() or onFailure() can be added with default implementations.
     * This is why this has been made and abstract class rather than Interface.
     */
}

/**
 * 
 * Class definition for a callback to be invoked when the response for the data 
 * submission is available.
 * 
 */
public abstract class PostCallback{
    /**
     * Called when a POST success response is received. <br/>
     * This method is guaranteed to execute on the UI thread.
     */
    public abstract void onPostSuccess();

}

নোট করুন যে অ্যাপ্লিকেশনটি REST এপিআই দ্বারা সরাসরি জেএসএন বা এক্সএমএল (বা অন্য যে কোনও ফর্ম্যাট) ব্যবহার করে না। পরিবর্তে, অ্যাপ্লিকেশনটি কেবল সিম দেখায় Profile

তারপরে, নিম্ন স্তরটি (অ্যাসিঙ্কটাস্ক স্তর) দেখতে দেখতে এটি দেখতে পারা যায়:

/**
 * An AsyncTask implementation for performing GETs on the Hypothetical REST APIs.
 */
public class GetTask extends AsyncTask<String, String, String>{
    
    private String mRestUrl;
    private RestTaskCallback mCallback;
    
    /**
     * Creates a new instance of GetTask with the specified URL and callback.
     * 
     * @param restUrl The URL for the REST API.
     * @param callback The callback to be invoked when the HTTP request
     *            completes.
     * 
     */
    public GetTask(String restUrl, RestTaskCallback callback){
        this.mRestUrl = restUrl;
        this.mCallback = callback;
    }
    
    @Override
    protected String doInBackground(String... params) {
        String response = null;
        //Use HTTP Client APIs to make the call.
        //Return the HTTP Response body here.
        return response;
    }
    
    @Override
    protected void onPostExecute(String result) {
        mCallback.onTaskComplete(result);
        super.onPostExecute(result);
    }
}

    /**
     * An AsyncTask implementation for performing POSTs on the Hypothetical REST APIs.
     */
    public class PostTask extends AsyncTask<String, String, String>{
        private String mRestUrl;
        private RestTaskCallback mCallback;
        private String mRequestBody;
        
        /**
         * Creates a new instance of PostTask with the specified URL, callback, and
         * request body.
         * 
         * @param restUrl The URL for the REST API.
         * @param callback The callback to be invoked when the HTTP request
         *            completes.
         * @param requestBody The body of the POST request.
         * 
         */
        public PostTask(String restUrl, String requestBody, RestTaskCallback callback){
            this.mRestUrl = restUrl;
            this.mRequestBody = requestBody;
            this.mCallback = callback;
        }
        
        @Override
        protected String doInBackground(String... arg0) {
            //Use HTTP client API's to do the POST
            //Return response.
        }
        
        @Override
        protected void onPostExecute(String result) {
            mCallback.onTaskComplete(result);
            super.onPostExecute(result);
        }
    }
    
    /**
     * Class definition for a callback to be invoked when the HTTP request
     * representing the REST API Call completes.
     */
    public abstract class RestTaskCallback{
        /**
         * Called when the HTTP request completes.
         * 
         * @param result The result of the HTTP request.
         */
        public abstract void onTaskComplete(String result);
    }

এখানে কোনও অ্যাপ্লিকেশন কীভাবে এপিআই ব্যবহার করতে পারে (একটিতে Activityবা Service):

HypotheticalApi myApi = HypotheticalApi.getInstance();
        myApi.getUserProfile("techie.curious", new GetResponseCallback() {

            @Override
            void onDataReceived(Profile profile) {
                //Use the profile to display it on screen, etc.
            }
            
        });
        
        Profile newProfile = new Profile();
        myApi.postUserProfile(newProfile, new PostCallback() {
            
            @Override
            public void onPostSuccess() {
                //Display Success
            }
        });

আমি আশা করি মন্তব্যগুলি নকশাটি ব্যাখ্যা করার জন্য যথেষ্ট; তবে আমি আরও তথ্য সরবরাহ করে খুশি হব।


বেশ সুন্দর কোডের উদাহরণের কারণে আমি এই উত্তরটি আরও পছন্দ করি। ধন্যবাদ
মারেক সেবেরা

1
সম্ভবত মূল্যহীন, এটি ভার্জিল ডবজানসির বর্ণিত হিসাবে যথাযথভাবেই বিশ্রামযুক্ত এমভিসি প্যাটার্ন অনুসরণ করে না। আপনাকে একটি সম্পূর্ণ কন্টেন্টপ্রোভাডার স্তর অন্তর্ভুক্ত করতে হবে যা অ্যাপ্লিকেশন সরাসরি ব্যবহার করে এমন একটি এসকিউএল ডাটাবেস ব্যবহার করে। অন্যথায়, এটি অ্যান্ড্রয়েডের জন্য একটি ভাল, কম ওজনের হালকা ক্লায়েন্ট।
কুপার

1
একটি ছোট জিনিস, আপনাকে গেট / পোস্টটাস্কের
এক্স কার্গাস

1
এটি সত্যিই দুর্দান্ত। আমি কীভাবে getResponseCallback আরও জেনেরিক করব, সুতরাং এটি কেবল কোনও প্রোফাইলই ফেরত দেয় না, বা আপনি এপিআই থেকে প্রতিটি ধরণের ডেটার জন্য পৃথক গেটআরস্পোনক্যালব্যাক তৈরির পরামর্শ দিবেন?

1
@ মিশেল হার্বিগ হ্যাঁ, GetResponseCallbackআরও জেনেরিক করার উপায় আছে । আমি যেটিকে পছন্দ করি তা হ'ল একটি মার্কার ইন্টারফেস ব্যবহার করা : interface IGetResopnse{} প্রতিক্রিয়া হতে পারে এমন সমস্ত শ্রেণিকে বোঝাতে পছন্দ করুন । তারপর, আমি আছে class Profile implements IGetResponseইত্যাদি অবশেষে, করতে GetResponseCallbackসঙ্গে জেনেরিক IGetResponseযেমন উপরের আবদ্ধ : public abstract class GetResponseCallback<? extends IGetResponse>
কৌতূহলীচিজেন

11

ভার্জিল ডবজানসির "অ্যান্ড্রয়েড আরইএসটি ক্লায়েন্ট অ্যাপ্লিকেশনগুলি বিকাশ করা" প্রচুর আলোচনার দিকে পরিচালিত করে, যেহেতু অধিবেশন চলাকালীন কোনও উত্স কোড উপস্থাপন করা হয়নি বা তার পরে সরবরাহ করা হয়নি।

আমি জানি কেবলমাত্র রেফারেন্স বাস্তবায়ন (দয়া করে আপনি যদি আরও জানেন তবে মন্তব্য করুন) ডেটাড্রয়েডে উপলব্ধ (গুগল আইও সেশনটি / উপস্থাপনার অধীনে উল্লেখ করা হয়েছে)। এটি একটি লাইব্রেরি যা আপনি নিজের প্রয়োগে ব্যবহার করতে পারেন।

দ্বিতীয় লিঙ্কটি "সেরা" আরএসটি ফ্রেমওয়ার্কের জন্য জিজ্ঞাসা করে, যা স্ট্যাকওভারফ্লোতে প্রচুর আলোচনা করা হয়। আমার জন্য আবেদনের আকার গুরুত্বপূর্ণ, এর পরে বাস্তবায়নের কর্মক্ষমতা।

  • সাধারণত আমি প্লেইন org.json ইনস্টলমেন্টটি ব্যবহার করি যা এপিআই স্তর 1 থেকে অ্যান্ড্রয়েডের অংশ এবং তাই অ্যাপ্লিকেশনটির আকার বাড়ায় না।
  • আমার জন্য খুব আকর্ষণীয় ছিল মন্তব্যে জেএসএন পার্সার পারফরম্যান্স সম্পর্কিত তথ্য : অ্যান্ড্রয়েড 3.0.০ হানিকম্বের হিসাবে, জিএসএন-এর স্ট্রিমিং পার্সারকে android.util.JsonReader হিসাবে অন্তর্ভুক্ত করা হয়েছে। দুর্ভাগ্যক্রমে, মন্তব্যগুলি আর উপলভ্য নয়।
  • স্প্রিং অ্যান্ড্রয়েড (যা আমি মাঝে মাঝে ব্যবহার করি) জ্যাকসন এবং জিএসওএন সমর্থন করে। স্প্রিং অ্যান্ড্রয়েড RestTemplate মডিউল ডকুমেন্টেশন একটি পয়েন্ট নমুনা অ্যাপ্লিকেশন

অতএব আমি জটিল দৃশ্যের জন্য org.json বা GSON এ আঁকড়ে থাকি। একটি org.json প্রয়োগের আর্কিটেকচারের জন্য, আমি একটি স্ট্যাটিক ক্লাস ব্যবহার করছি যা সার্ভারের ব্যবহারের ক্ষেত্রে (যেমন ফাইন্ডপারসন, গেটপারসন) প্রতিনিধিত্ব করে। আমি কোনও পরিষেবা থেকে এই কার্যকারিতাটি কল করি এবং ইউটিলিটি ক্লাসগুলি ব্যবহার করি যা ম্যাপিং করছে (প্রকল্প নির্দিষ্ট) এবং নেটওয়ার্ক আইও (সরল জিইটি বা পোষ্টের জন্য আমার নিজের নিজস্ব টেম্পলেট)। আমি প্রতিবিম্ব ব্যবহার এড়াতে চেষ্টা করি।


4
প্রোগ্রামিং অ্যান্ড্রয়েডের ও'রিলি বইটিতে ডবজানসির রিস্টলফুল এমভিসি প্যাটার্ন (অধ্যায় 12-13) এর সম্পূর্ণ বাস্তবায়ন রয়েছে।
কুপার

ইঙ্গিতটির জন্য ধন্যবাদ: আমি অ্যামাজনে এই বিবৃতিটি পেয়েছি: "কন্টেন্ট সরবরাহকারীদের সাথে 12 ও 13 অধ্যায়টি চুক্তি করে example উদাহরণ কোড সহ একটি নমুনা অ্যাপ্লিকেশন সহ সামগ্রী সরবরাহকারীদের বিস্তৃত চিকিত্সা এই প্রযুক্তি কীভাবে কাজ করে এবং কীভাবে এটি করতে পারে সে সম্পর্কে আমাকে বেশ কয়েকটি নতুন অন্তর্দৃষ্টি সরবরাহ করেছিল how বাস্তব প্রোগ্রামিং পরিস্থিতিতে ব্যবহার করুন U ইউআরআই ব্যবহার করে ডেটা সংরক্ষণ এবং রেফারেন্সের জন্য সামগ্রী সরবরাহকারী কাঠামো অ্যান্ড্রয়েড অপারেটিং সিস্টেমের অন্যতম অভিনব বৈশিষ্ট্য the প্রযুক্তিটির ধাপে ধাপে ব্যাখ্যা করার ক্ষেত্রে দুর্দান্ত কাজ! "
ক্রিলিপ

2
কোডটি গিথুব.কম / বিমাইকে / প্রোগ্রামগ্রামিং এন্ড্রয়েড 2 উদাহরণগুলিতে রয়েছে (তবে অধ্যায়গুলি অনুপস্থিত রয়েছে, আপনি এগুলি প্রথম সংস্করণ কোড github.com/bmeike/ProgrammingAndroidE উদাহরণগুলিতে খুঁজে পেতে পারেন )
ক্রিলিপ

আইসিএস + এ এই কোডটি চালাতে কেউ কি সক্ষম হয়েছেন? ফিঞ্চভিডিও উদাহরণের অধীনে টুডো ফাইলটি সংক্ষিপ্তভাবে "- আইসিএসের অধীনে ক্র্যাশগুলি" বলে। কোডের উদাহরণগুলি ভেঙে গেছে তা আবিষ্কার করার জন্য আমি বইটি কিনে কিছুটা হতাশ
হয়েছি

7

নেটওয়ার্ক অনুরোধ বা যা চালিয়ে যাওয়া দরকার তা সম্পাদন করতে কখনও অ্যাসিনটাস্ক ব্যবহার করবেন না। অ্যাসিঙ্ক টাস্কটি আপনার ক্রিয়াকলাপের সাথে দৃ strongly়ভাবে জড়িত এবং অ্যাপটি তৈরি হওয়ার পরে ব্যবহারকারী পর্দার ওরিয়েন্টেশন পরিবর্তন করলে অ্যাসিঙ্কটাস্ক বন্ধ হয়ে যাবে।

আমি আপনাকে ইনটেন্ট সার্ভিস এবং রেজাল্টসিভারের সাথে পরিষেবা প্যাটার্নটি ব্যবহার করার পরামর্শ দিচ্ছি। দেখে নিন ব্যবহার করার RESTDroid । এটি একটি লাইব্রেরি যা আপনাকে ভারসিল ডবজানসির পরিষেবা ধরণটি প্রয়োগ করে অনুরোধ শ্রোতাদের সাথে যে কোনও প্রকারের আরএসইটি অনুরোধটি অবিচ্ছিন্নভাবে সম্পাদন করতে এবং আপনার ইউআইকে অবহিত করতে দেয়।


3

অনেক ক্লিনার এপিআই এবং টাইপ-নিরাপদ ডেটা সহ আরও একটি গ্রন্থাগার রয়েছে। https://github.com/kodart/Httpzoid

এখানে একটি সাধারণ ব্যবহার উদাহরণ

Http http = HttpFactory.create(context);
http.post("http://example.com/users")
    .data(new User("John"))
    .execute();

কলব্যাক সহ আরও জটিল

Http http = HttpFactory.create(context);
http.post("http://example.com/users")
    .data(new User("John"))
    .handler(new ResponseHandler<Void>() {
        @Override
        public void success(Void ignore, HttpResponse response) {
        }

        @Override
        public void error(String message, HttpResponse response) {
        }

        @Override
        public void failure(NetworkError error) {
        }

        @Override
        public void complete() {
        }
    }).execute();

এটি তাজা নতুন, তবে খুব আশাব্যঞ্জক দেখাচ্ছে


মনে হচ্ছে এটি অ্যাসিঙ্কটাস্কে চলছে, যা দীর্ঘকাল চলমান অনুরোধ এবং ক্রিয়াকলাপগুলির মধ্যে স্যুইচ করার পক্ষে ভাল নয়, কারণ ক্রিয়াকলাপটি প্রস্থান করলে অ্যাসিঙ্কটাস্ক মারা যাবে।
মালাচিয়াজ

1

সেখানে প্রচুর গ্রন্থাগার রয়েছে এবং আমি এটি ব্যবহার করছি: https://github.com/nerde/rest-resource । এটি আমার দ্বারা তৈরি করা হয়েছিল এবং আপনি ডকুমেন্টেশনে দেখতে পাচ্ছেন যে এটি অন্যগুলির চেয়ে পরিষ্কার এবং সহজ। এটি অ্যান্ড্রয়েডের উপর দৃষ্টি নিবদ্ধ করে না, তবে আমি এটি ব্যবহার করছি এবং এটি বেশ ভালভাবে কাজ করছে।

এটি এইচটিটিপি বেসিক অ্যাথ সমর্থন করে। এটি JSON অবজেক্টগুলিকে সিরিয়ালাইজেশন এবং ডিসাইরিয়ালেস করার নোংরা কাজ করে। আপনি এটি পছন্দ করতে পারেন, বিশেষত যদি আপনার এপিআইটি রেলের মতো হয়।


1

দাবি অস্বীকার: আমি রেস্ট 2 মোবাইল ওপেন সোর্স প্রকল্পে জড়িত

একটি REST ক্লায়েন্ট হিসাবে অন্য বিকল্প হ'ল রেস্ট 2 মোবাইল ব্যবহার করা ।

আরএসটি পরিষেবার জন্য ক্লায়েন্ট কোড উত্পন্ন করতে কংক্রিটের বিশ্রামের উদাহরণগুলি ব্যবহার করার কারণে এ পদ্ধতিটি কিছুটা আলাদা । কোডটি আরএসটি ইউআরএল এবং জেএসএন পে-লোডগুলিকে দেশীয় জাভা পদ্ধতি এবং পিওজিওগুলির সাথে প্রতিস্থাপন করে। এটি স্বয়ংক্রিয়ভাবে সার্ভার সংযোগগুলি, অ্যাসিঙ্ক্রোনাস আহ্বানগুলি এবং JSON রূপান্তরগুলিতে / থেকে POJO পরিচালনা করে।

নোট করুন যে এই সরঞ্জামটি বিভিন্ন স্বাদে (ক্লিপ, প্লাগইনস, অ্যান্ড্রয়েড / আইওএস / জেএস সমর্থন) আসে এবং আপনি সরাসরি আপনার অ্যাপ্লিকেশনটিতে এপিআই তৈরি করতে অ্যান্ড্রয়েড স্টুডিও প্লাগইন ব্যবহার করতে পারেন ।

সমস্ত কোড এখানে গিথুবে পাওয়া যাবে


3
আপনার সাইটের বিজ্ঞাপনের পরিবর্তে প্রকৃত টার্গেটের সাথে প্রথম লিঙ্কটি প্রতিস্থাপন করুন।
স্কাইদান

0

অ্যান্ড্রয়েডের জন্য আমরা আমাদের লাইটওয়েট অ্যাসিঙ্ক আরএসটি ক্লায়েন্ট লাইব্রেরিটি উন্মুক্ত করেছি, আপনি যদি প্রয়োজনীয় ন্যূনতম প্রয়োজন হয় এবং মাল্টিথ্রেডিং নিজেই পরিচালনা করতে না চান তবে এটি কার্যকর হতে পারে - এটি বেসিক যোগাযোগের জন্য খুব ঠিক আছে তবে একটি পূর্ণ-বর্ধিত আরএসইটি ক্লায়েন্ট নয় গ্রন্থাগার।

একে libRESTfulClient বলা হয় এবং গিটহাবে পাওয়া যায়

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.