자바에서 CouchDB를위한 REST 클라이언트를 작성 중이다. 다음 코드는 상당히 표준 적이어야합니다.Java HttpURLConnection.getInputStream, get 401 IOException
this.httpCnt.connect();
Map<String, String> responseHeaders = new HashMap<>();
int i = 1;
while (true){
String headerKey = this.httpCnt.getHeaderFieldKey(i);
if (headerKey == null)
break;
responseHeaders.put(headerKey, this.httpCnt.getHeaderField(i));
i++;
}
InputStreamReader reader = new InputStreamReader(this.httpCnt.getInputStream());
StringBuilder responseBuilder = new StringBuilder();
char[] buffer = new char[1024];
while(true){
int noCharRead = reader.read(buffer);
if (noCharRead == -1){
reader.close();
break;
}
responseBuilder.append(buffer, 0, noCharRead);
}
인증에 실패하면 어떻게 될지 테스트하고 싶습니다. 그러나 인증에 실패하면 HttpURLConnection의 getInputStream
을 호출 할 때 서버 응답 401을 말하는 IOException이 발생합니다. 서버가 성공 또는 실패 여부에 관계없이 응답 할 경우 서버가 반환하는 값을 읽을 수 있어야합니다. 그리고이 경우에는 서버가 말풍선을 사용하여 서버에 GET
을 수행하고 인증에 실패하면 일부 오류 메시지가있는 응답 본문으로 JSON 객체가 생기므로 서버가 본문에 일부 텍스트를 반환합니다.
401이더라도 응답 본문을 가져 오는 방법이 있습니까?
'for'루프를 사용하여 코드를 더 읽기 쉽도록 repalce 할 수 있습니다. – user3001