2011-07-14 3 views
7

WebサーバーにあるXmlファイルを解析し、解析されたデータをデータベースに格納しています。私のアプリケーションのために私はデータベースからのデータを使用しています。ファイルが変更されている場合にのみ、xmlファイルを解析する必要があります。解析する必要はありません。では、ファイルが変更されたことをどのように知ることができますか?私は "if-modified-since"ヘッダーを使用できることを知っています。しかし 私はAndroid:Webサーバーにあるファイルを知る方法が変更されていますか?

答えて

16

Webサーバから自分の.xmlファイルを取得しているので、これは比較的簡単なはず。

xmlファイルのHTTPリクエストを行っている場合、WebサーバーからHEADリクエストを実行するだけで、ファイルが変更または変更されている場合、または存在しない場合は戻ります。これはまた、軽量であり、サーバーがあなたのためにこれを行うべきであるということが最も重要です。

を編集してください。あなたの質問を再読しても、同じ考えがあるようです。ここにコードがあります。

import java.net.*; 
import java.io.*; 

// Using HTTP_NOT_MODIFIED 
public static boolean Changed(String url){ 
    try { 
     HttpURLConnection.setFollowRedirects(false); 
     HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection(); 
     con.setRequestMethod("HEAD"); 
     return (con.getResponseCode() == HttpURLConnection.HTTP_NOT_MODIFIED); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
     return false; 
    } 
    } 

// GET THE LAST MODIFIED TIME 
public static long LastModified(String url) 
{ 
    HttpURLConnection.setFollowRedirects(false); 
    HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection(); 
    long date = con.getLastModified(); 

    if (date == 0) 
    System.out.println("No last-modified information."); 
    else 
    System.out.println("Last-Modified: " + new Date(date)); 

    return date; 
} 

参照:

また、サーバーがサポートしている場合、あなたのファイルが変更されているかどうかを確認するためにてETagを使用することができます。

+0

ハイテク上記の場合は、uがより明確に上記の方法を説明することができ、それは「メソッドはtrueを返します。 –

+0

ありがとうございますジャスティンシールド、私はそれを持って..... –

+0

これはあなたが何度も乱用されている(*私は、私が間違っている場合*私は正しいと思う)キャッシングとスタッフ。 – Nanne

1

は、ファイルのMD5を計算.......私を助けてください「変更した場合-ので、」ヘッダ
のいくつかの例を必要としています。あなたは古いものを保存して比較することができますか?

あなたは、これは例えば、チェックアウト方法がわからない場合:サーバー側のMD5サムを行うことなく、Getting a File's MD5 Checksum in Java

+0

私はMD5うん –

+6

に動作しますが、これはファイル全体をダウンロードする必要がありますどのようになったおかげでNanne .. – dcow

関連する問題