Restful Webservice Call using OKHTTP with worker Thread

Restful Webservice Call using OKHTTP with worker Thread


In your project create a class file and name it as RequestToServer.java. The parser class mainly deals the following operations

RequestToServer.java

import android.os.Handler;

import com.squareup.okhttp.MediaType;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.RequestBody;

import java.io.IOException;

/** * Created by Bishnu on 12/10/2015. */public class RequestToServer {
    private static RequestToServer requestToServer;
    private final OkHttpClient client = new OkHttpClient();
    private Runnable runnable;
    Handler handler = new Handler();
    public static RequestToServer getInstance(){
        if(requestToServer == null)
            requestToServer = new RequestToServer();
        return requestToServer;
    }

    public void setRequestToServer(final String URL,final String requestjson, final ResponseCallBack responseCallBack) {
        runnable = new Runnable() {
            @Override            public void run() {
                try {
                    MediaType mediaType = MediaType.parse("application/octet-stream");
                    RequestBody body = RequestBody.create(mediaType,
                            requestjson);
                    Request request = new Request.Builder()
                            .url(URL)
                            .post(body)
                            .addHeader("cache-control", "no-cache")
                            .build();

                    final com.squareup.okhttp.Response response = client.newCall(request).execute();
                    if (!response.isSuccessful()) {
                        handler.post(new Runnable() {
                            @Override                            public void run() {
                                responseCallBack.failed(response.toString());
                            }
                        });

                    }

                    final String responseInString = response.body().string();
                    if (responseInString != null && responseInString.trim().length() > 0) {

                        handler.post(new Runnable() {
                            @Override                            public void run() {
                                responseCallBack.success(responseInString);
                            }
                        });

                    } else {
                        handler.post(new Runnable() {
                            @Override                            public void run() {
                                responseCallBack.failed(response.toString());
                            }
                        });
                    }

                } catch (final IOException e) {
                    handler.post(new Runnable() {
                        @Override                        public void run() {
                            responseCallBack.failed(e.getMessage());
                        }
                    });

                }
            }
        };
        Thread thread = new Thread(runnable);
        thread.start();
    }


    public interface ResponseCallBack {
        public void success(String data);
        public void failed(String data);
    }
}

Call RequestToServer class in Main Thread

RequestToServer requestToServer = RequestToServer.getInstance();
requestToServer.setRequestToServer(url, json, new RequestToServer.ResponseCallBack() {
    @Override    public void success(String data) {
        Toast.makeText(MainActivity.this, "data is \n " + data, Toast.LENGTH_LONG).show();
        Log.d("data", data);
    }

    @Override    public void failed(String data) {
        Toast.makeText(MainActivity.this, "Error  is \n " + data, Toast.LENGTH_LONG).show();
        Log.d("data", data);
    }
});






0 comments:

Post a Comment

Next Older Post