जब सर्वर त्रुटि देता है तो मुझे 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();
लेकिन मैं अनुरोध निकाय को पुनः प्राप्त नहीं कर सकता ... शायद कुछ तरीका है जो मुझे पुस्तकालय में नजर नहीं आया?