簡體   English   中英

HTTP呼叫傳回過時的資料

[英]HTTP Call Returning Stale Data

我正在構建一個應用程序,該應用程序以固定的時間間隔從網站檢索數據,並且正在檢索陳舊的數據。 具體來說,我是從NFL游戲中獲取分數,但是只要分數發生變化,我的應用程序就會在返回舊分數和新分數之間交替進行。 最終,它將穩定並僅返回新分數。

如何防止我的應用程序返回陳舊數據?

public class MainActivity extends Activity {

private String webSourceCode;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

   new MyAsyncTask().execute(); 

}

private class MyAsyncTask extends AsyncTask<Void, Void, List<Integer>> {
    protected List<Integer> doInBackground(Void... params) {
        StringBuilder sb = new StringBuilder();
        try {
            URL nfl = new URL("http://www.cbssports.com/nfl/scoreboard");
            BufferedReader in = new BufferedReader(
                    new InputStreamReader(
                            nfl.openStream()));
            String inputLine;

            while ((inputLine = in.readLine()) != null) {
                sb.append(inputLine);
            }
            in.close();
        } 
        catch (MalformedURLException e) {
            e.printStackTrace();
        } 
        catch (IOException e) {
            e.printStackTrace();
        }
        webSourceCode = sb.toString();

        return parseScores(webSourceCode);
    }
    protected void onPostExecute(List<Integer> listScores) {

        updateViews(listScores);
        //recursion
        new MyAsyncTask().execute();
    }
}

}

GET調用可以由服務器或中介緩存。 您可以傳遞動態查詢參數,以確保中介/服務器不會發回緩存的響應。 這樣的事情會起作用:

URL nfl = new URL("http://www.cbssports.com/nfl/scoreboard?nocache="+new Date().getTime());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM