QA@IT
«質問へ戻る

質問を投稿

HTTPリクエストの文字コード2

http://qa.atmarkit.co.jp/q/3362?_nid=2423
の続きです

HttpURLConnection conn = (HttpURLConnection) target.openConnection();
conn.setRequestMethod("GET");
conn.setDoOutput(true);
conn.connect();

InputStream in = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
conn.disconnect();
String line = "";
while ( ( line = reader.readLine() ) != null ) {
        if ( line.contains("charset=") ) {
            nextEncoding  = line.substring( line.indexOf("charset=")+8, line.lastIndexOf("\"") );
            reader.close(); 
                conn.disconnect();
            break;
        }
}
line = "";
reader = new BufferedReader(new InputStreamReader(in, nextEncoding));
while ((line = reader.readLine()) != null) {
    tmpBody.append(line);
}
String html = tmpBody.toString();
reader.close();
in.close();
conn.disconnect();

のように一度あるURLからエンコードの部分を読み取って、そのエンコード(上記のコードのnextEncoding)に従って、再度読み取りにいくという手法で、例外が発生しています。
このような方法はいけないのでしょうか??

http://qa.atmarkit.co.jp/q/3362?_nid=2423
の続きです

```
HttpURLConnection conn = (HttpURLConnection) target.openConnection();
conn.setRequestMethod("GET");
conn.setDoOutput(true);
conn.connect();

InputStream in = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
conn.disconnect();
String line = "";
while ( ( line = reader.readLine() ) != null ) {
        if ( line.contains("charset=") ) {
	        nextEncoding  = line.substring( line.indexOf("charset=")+8, line.lastIndexOf("\"") );
	        reader.close(); 
                conn.disconnect();
	        break;
        }
}
line = "";
reader = new BufferedReader(new InputStreamReader(in, nextEncoding));
while ((line = reader.readLine()) != null) {
	tmpBody.append(line);
}
String html = tmpBody.toString();
reader.close();
in.close();
conn.disconnect();
```
のように一度あるURLからエンコードの部分を読み取って、そのエンコード(上記のコードのnextEncoding)に従って、再度読み取りにいくという手法で、例外が発生しています。
このような方法はいけないのでしょうか??