সার্ভারের ত্রুটি ফিরে আসার ক্ষেত্রে জসন প্রতিক্রিয়া পুনরুদ্ধার করতে আমার সমস্যা আছে। বিস্তারিত নীচে দেখুন.
আমি কীভাবে অনুরোধটি সম্পাদন করব
আমি ব্যবহার java.net.HttpURLConnection
। আমি অনুরোধের বৈশিষ্ট্যগুলি সেটআপ করি, তারপরে আমি তা করি:
conn = (HttpURLConnection) url.openConnection();
এর পরে, যখন অনুরোধটি সফল হয়, আমি জেসন প্রতিক্রিয়া পাই:
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 এর মতো কিছু ত্রুটি ফিরে আসলে আমি জসনকে পুনরুদ্ধার করতে পারি না ,. নিম্নলিখিত লাইনটি 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();
তবে আমি অনুরোধের বডিটি পুনরুদ্ধার করতে পারি না ... সম্ভবত এমন কোনও পদ্ধতি আছে যা আমি গ্রন্থাগারে লক্ষ্য করি নি?