2016-08-13 17 views
11

ऑफ़लाइन सर्वर पर एंगुलर 2 http कॉल निष्पादित करने से ऑब्जर्जेबल के .catch (त्रुटि) ऑपरेटर या सदस्यता त्रुटि प्रतिनिधि में मुझे "त्रुटि प्रतिक्रिया" ऑब्जेक्ट में अधिक जानकारी प्रदान नहीं होती है (वे दोनों साझा करते हैं वास्तव में एक ही जानकारी)। लेकिन जैसा कि आप कंसोल के स्क्रीन शॉट पर देख सकते हैं, वहां वास्तविक त्रुटि को zone.js द्वारा किसी भी तरह प्रदर्शित किया गया था। तो, मैं इस विशिष्ट त्रुटि जानकारी (नेट :: ERR_CONNECTION_REFUSED) कैसे प्राप्त कर सकता हूं?कोणीय 2 http सेवा। विस्तृत त्रुटि जानकारी प्राप्त करें

धन्यवाद। enter image description here

उत्तर

6

जब भी सर्वर का जवाब नहीं है, response.status हमेशा के लिए 0 (शून्य)

{ 
    type: 3, //ResponseType.Error 
    status: 0, // problem connecting endpoint 
} 

बराबर होगा यह भी ध्यान रखें, जब आप सीओआरएस अनुरोध कर रहे हैं, लेकिन उत्पत्ति (ब्राउज़र में यूआरएल) अधिकृत नहीं है (रिमोट एंडपॉइंट में कॉन्फ़िगर किए गए होस्ट नामों की अनुमति सूची में नहीं) प्रतिक्रिया उपरोक्त के समान होगी, विशेषता प्रकार को अपवाद के साथ जो 4 = प्रतिक्रिया के बराबर होगा Type.Opaque ...

इसका मतलब है, कनेक्शन बनाया गया था, लेकिन उदाहरण के लिए, OPTIONS अनुरोध हेडर के साथ लौटाया गया जिसमें मूल मूल या HTTPS अनुरोध HTTP मूल से नहीं किया गया था।

+0

यह सही है। टाइप 3 नेटवर्किंग समस्या इंगित करता है (हालांकि ठोस त्रुटि कोड नहीं)। अधिक जानकारी यहां मिल सकती है https://fetch.spec.whatwg.org/#responsetype और यहां https://fetch.spec.whatwg.org/#concept-network-error इसके अलावा स्थिति == 3 की स्थिति भी है हमेशा शून्य – rook

-1

कोड में खुदाई के बिना, मेरी उम्मीद यह है कि यदि सर्वर पहुंच योग्य नहीं है, तो सर्वर से कोई प्रतिक्रिया वापस नहीं की जा सकती है। इसलिए प्रतिक्रिया वस्तु इसकी प्रारंभिक स्थिति बनी हुई है।

1

आप त्रुटि संदेशों को संभाल सकते हैं ताकि उन्हें पढ़ना आसान हो। यह निश्चित रूप से बहुत पर विस्तारित किया जा सकता:

public Get() { 
    return this.http.get(this.URL).map(this.extractData) 
     .catch(this.handleError); 
} 

public extractData(res: Response) { 
    let body = res.json(); 
    return body || {}; 
} 

public handleError(error: any) { 
    let errMsg = (error.message) ? error.message : 
     error.status ? `${error.status} - ${error.statusText}` : 'Server error'; 
    console.error(errMsg); 
    return Observable.throw(errMsg); 
} 

Check out this part of the docs on error handling.

+1

नहीं, आपको कोई संकेत नहीं मिलेगा कि इस दृष्टिकोण का उपयोग कर नेटवर्क कनेक्शन त्रुटि हुई है। – rook

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