जब सर्वर त्रुटि देता है तो मुझे Json प्रतिक्रिया प्राप्त करने में समस्या होती है। विवरण नीचे देखें।
मैं कैसे अनुरोध करता हूं
मैं उपयोग करता हूं java.net.HttpURLConnection
। मैं गुणों का अनुरोध सेटअप करता हूं, फिर मैं करता हूं:
conn = (HttpURLConnection) url.openConnection();
उसके बाद, जब अनुरोध सफल होता है, मुझे प्रतिक्रिया मिलती है Json:
br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
sb = new StringBuilder();
String output;
while ((output = br.readLine()) != null) {
sb.append(output);
}
return sb.toString();
... और समस्या यह है:
जब सर्वर 50x या 40x जैसी कुछ त्रुटि देता है, तो मैं प्राप्त Json को पुनः प्राप्त नहीं कर सकता। निम्न पंक्ति IOException को फेंकता है:
br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
// throws java.io.IOException: Server returned HTTP response code: 401 for URL: www.example.com
सर्वर सुनिश्चित करने के लिए शरीर भेजता है, मैं इसे बाहरी टूल बर्प सूट में देखता हूं:
HTTP/1.1 401 Unauthorized
{"type":"AuthApiException","message":"AuthApiException","errors":[{"field":"email","message":"Invalid username and/or password."}]}
मैं निम्नलिखित तरीकों का उपयोग करके प्रतिक्रिया संदेश (अर्थात "आंतरिक सर्वर त्रुटि") और कोड (यानी "500") प्राप्त कर सकता हूं:
conn.getResponseMessage();
conn.getResponseCode();
लेकिन मैं अनुरोध निकाय को पुनः प्राप्त नहीं कर सकता ... शायद कुछ तरीका है जो मुझे पुस्तकालय में नजर नहीं आया?