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