特定のWebサイトのHTMLソースコードをダウンロードし、それを同じWebサイトから以前にダウンロードしたものと比較して、変更が発生したかどうかを確認するサービスがあります。
昨日私が抱えていた問題:私は公共の場でWiFiに接続し、接続がないことを示していなかったため、サービスがコードのダウンロードを開始しました。ただし、パブリックWiFiを使用する場合は、最初にログインする必要があるため、ログインページにリダイレクトされ、私のサービスはログインページのHTMLコードをダウンロードしました。
どうすれば欲しいサイトのソースコードを確実に入手できますか?
ソースコードは次のとおりです(比較を容易にするためにソースコードをmd5に変換しますが、重要ではありません)。
public class DownloadHandler{
public String getMd5(String url){
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
HttpResponse response = null;
try {
response = client.execute(request);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
InputStream in = null;
try {
in = response.getEntity().getContent();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder str = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
str.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
String HTML = str.toString();
try {
String md5 = stringToMd5(html);
return md5;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}
public String stringToMd5(String s) throws NoSuchAlgorithmException {
MessageDigest md5 = MessageDigest.getInstance("MD5");stringa
md5.update(s.getBytes(), 0, s.length());
String md5String = new BigInteger(1, md5.digest()).toString(16);
return md5String;
}
そして接続をチェックする機能:
boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager
.getActiveNetworkInfo();
return activeNetworkInfo != null;
}