Sunucunun hata vermesi durumunda Json yanıtını alırken sorun yaşıyorum. Aşağıdaki ayrıntılara bakın.
Talebi nasıl yerine getiriyorum
Ben kullanıyorum java.net.HttpURLConnection
. İstek özelliklerini kurarım, sonra yaparım:
conn = (HttpURLConnection) url.openConnection();
Bundan sonra istek başarılı olduğunda Json yanıtını alıyorum:
br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
sb = new StringBuilder();
String output;
while ((output = br.readLine()) != null) {
sb.append(output);
}
return sb.toString();
... ve sorun şu:
Sunucu 50x veya 40x gibi bir hata verdiğinde alınan Json'ı alamıyorum. Aşağıdaki satır IOException'ı atar:
br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
// throws java.io.IOException: Server returned HTTP response code: 401 for URL: www.example.com
Sunucu kesin olarak vücut gönderiyor, bunu harici araç Burp Suite'te görüyorum:
HTTP/1.1 401 Unauthorized
{"type":"AuthApiException","message":"AuthApiException","errors":[{"field":"email","message":"Invalid username and/or password."}]}
Aşağıdaki yöntemleri kullanarak yanıt mesajı (ör. "Dahili Sunucu Hatası") ve kodu (ör. "500") alabilirim:
conn.getResponseMessage();
conn.getResponseCode();
Ama istek gövdesini alamıyorum ... kütüphanede fark etmediğim bir yöntem olabilir mi?