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