मैं एक उदाहरण नीचे पोस्टिंग कर रहा हूँ पुराना वापस कार्यान्वयन के साथ मदद करने के लिए।
इस (MyResource.java) की तरह अपने संसाधन बनाएँ।
Call<TKBaseResponse> testConnection(@@Url String customUrl);
प्रारंभ रेट्रोफिट
private Resource getRetrofitResource(){
//Initialize retrofit.
final Retrofit = .....//your code to initialize retrofit
return retrofit.create(MyResource.class);
}
कॉल को कतारबद्ध (async पुराना वापस कॉल) आप अपने संसाधन प्रतिक्रिया और एक प्रतिक्रिया हैंडलर को कतारबद्ध विधि में अपना कस्टम कार्यान्वयन है जो उत्तीर्ण करने की आवश्यकता को लागू करने। मैं के साथ ResponseHandler की मेरी कार्यान्वयन पोस्टिंग कर रहा हूँ।
public abstract class ResponseHandler<T> {
private static final String TAG = ResponseHandler.class.getSimpleName();
private static final String LINE_SEPARATOR = System.getProperty("line.separator");
private final Context context;
public ResponseHandler() {
this(null);
}
public ResponseHandler(final Context context) {
this.context = context;
}
public abstract void onResponse(final T response);
public void onError(final ErrorResponse errorResponse) {
if (context == null) {
return;
}
Log.e(TAG, "An error occurred while invoking service. Error Code: " + errorResponse.getErrorCode() + LINE_SEPARATOR + "Message: " + errorResponse.getMessage() + LINE_SEPARATOR);
final AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context);
alertBuilder.setCancelable(true);
alertBuilder.setTitle(R.string.title_server_error_dialog);
alertBuilder.setMessage(R.string.network_error_message);
alertBuilder.setPositiveButton(R.string.text_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, final int which) {
dialog.dismiss();
}
});
alertBuilder.show();
}
public void onFailure(Throwable throwable) {
if (context == null) {
return;
}
Log.e(TAG, "An error occurred while invoking service", throwable);
final AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context);
alertBuilder.setCancelable(true);
alertBuilder.setTitle(R.string.title_network_error_dialog);
alertBuilder.setMessage(R.string.network_error_message);
alertBuilder.setPositiveButton(R.string.text_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, final int which) {
dialog.dismiss();
}
});
alertBuilder.show();
}
}
एक विधि हैंडल प्रतिक्रिया बनाएँ।
protected <T> void handleResponse(Call<T> call, final ResponseHandler<T> responseHandler) {
call.enqueue(new Callback<T>() {
@Override
public void onResponse(final Call<T> call, final Response<T> response) {
if (response.isSuccess()) {
if (responseHandler != null) {
responseHandler.onResponse(response.body());
}
} else {
final ErrorResponse errorResponse = parseError(response);
if (responseHandler != null) {
responseHandler.onError(errorResponse);
}
}
}
@Override
public void onFailure(final Call<T> call, final Throwable throwable) {
if (responseHandler != null) {
responseHandler.onFailure(throwable);
}
}
});
}
अगर आपको इसके आसपास कोई संदेह है तो कृपया मुझे बताएं।
नीचे की तरह अपने संसाधन फोन से अब
।
final MyResource resource = getRetrofitResource();
final Call<TKBaseResponse> response = resource .testConnection("ANY_URL_OF_YOUR_CHOICE");
handleResponse(response, new ResponseHandler<TKBaseResponse>(){
public void onResponse(final TKBaseResponse response){
//Do whatever you want to do here..
}
});
स्रोत
2016-07-19 09:31:06
आप बाकी कॉल कोड दिखाकर शुरू कर सकते हैं, और पूर्ण त्रुटि लॉग –
आपको कस्टमकॉल बनाने की आवश्यकता क्यों है?बस किसी भी इंटरफ़ेस क्लास को बनाएं जिसमें के साथ सरल कॉल शामिल हो, किसी भी webservice से कनेक्ट होने वाले किसी भी एप्लिकेशन को बनाने के लिए पर्याप्त होना चाहिए, है ना? –
faruk
कृपया यहां से एक नज़र डालें https://github.com/saveendhiman/SampleApp/tree/master/app/src/main/java/com/sampleapp/api – Saveen