コード
このソースでのステータスコードの判定は、下記のOracleのバグレポートへの回答を参考にしました。(https://bugs.java.com/bugdatabase/view_bug.do?bug_id=4513568)
回答によると、
- ステータスコード<400
getInputStream()を使う - ステータスコード≥400
getErrorStream()を使う
となっています。バグレポートのケース(Soap)のみに対する回答なのか、はっきりしない部分もあると感じます。
ステータスコードによってInputStreamを取得するメソッドの使い分けを判定したくない場合は、
try{
InputStream _is = con.getInputStream();
}catch(Exception e){
try{
InputStream _is = con.getErrorStream();
}catch(Exception e){
}
}
や
try{
InputStream _is = con.getErrorStream();
if(_is == null){
_is = con.getInputStream();
}}catch(Exception e){
}
のような実装が考えられそうです。