2015-11-29 14 views
8

में त्रुटियों को संभालना मेरा अनुरोध पीओजेओ या जेएसओएन त्रुटि त्रुटि के लिए JSON प्राप्त करना चाहिए (अमान्य अनुरोध फ़ील्ड, सर्वर समस्याएं आदि हो सकती हैं)।रेट्रोफिट 2 आरएक्स

लेकिन ग्राहक में रेट्रोफिट मुझे केवल थ्रोबल देता है। मैं कैसे पता लगा सकता हूं कि नेटवर्क त्रुटि, http कोड क्या है, और त्रुटि के साथ JSON प्राप्त करें?

private class ProjectListSubscriber extends Subscriber<ProjectListResponse> { 

    @Override 
    public void onCompleted() { 
    } 

    @Override 
    public void onError(Throwable e) { 
     //is that a network? http code? convert json to error POJO? 
    } 

    @Override 
    public void onNext(ProjectListResponse projectListResponse) { 
     updateProjectList(projectListResponse.getProjectList()); 
    } 
} 

उत्तर

10

आप RxJava उपयोग कर रहे हैं के बाद से, onError नेटवर्क त्रुटियों और संबंधी त्रुटि अंतिमबिंदुओं के मामले में कहा जाता है Response का हिस्सा हैं। त्रुटि के मामले में, जाँच लें कि फेंकने योग्य HttpException

public void onError(Throwable e) { 
    if (e instanceof HttpException) { 

का एक उदाहरण है अगर जांच सही है, तो आप अपने अनुरोध में कोई त्रुटि है। फेंकने योग्य को HttpException पर कास्ट करें, और एक्सेस सदस्य हैं। जैसे

((HttpException) e).response().errorBody() 

यदि चेक false है तो आपके पास नेटवर्क से संबंधित त्रुटि है।

+0

मैं आरएक्स में प्रतिक्रिया वस्तु कैसे प्राप्त कर सकता हूं? – DmitryBorodin

+0

मैंने अपना जवाब संपादित किया – Blackbelt

+0

धन्यवाद। मैंने अभी जांच की है - किसी भी गैर 200 http कोड के मामले में त्रुटि कॉल करें। न केवल नेटवर्क त्रुटियां। – DmitryBorodin

संबंधित मुद्दे