首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从没有八月的Dropbox链接获取元数据

从没有八月的Dropbox链接获取元数据
EN

Stack Overflow用户
提问于 2013-09-03 15:39:08
回答 1查看 994关注 0票数 2

我想检查dropbox上有共享链接的文本文件的版本更改/获取元数据。我不会使用dropbox,因为它让用户使用自己的帐户。我希望他们链接到我的帐户,我不能手动这样做,因为我可能会更改我的密码以后。

因此:没有标记,只需从dropbox的共享链接中获取元数据,以便我可以检查版本更改,如果版本已经更改,请下载新文件的内容。

另外:我也愿意接受其他的建议。请详细解释一下你的解决方案。

更新的电子标签问题:

代码语言:javascript
复制
public void getFromOnlineTxtDatabase(){
        try{
            URL url = new URL("url-here");
            HttpURLConnection.setFollowRedirects(true);
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setDoOutput(false);
            con.setReadTimeout(20000);
            con.setRequestProperty("Connection", "keep-alive");
            //get etag for update check
                String etag = con.getHeaderField("etag");
            //String etag= "";

            con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0");
            ((HttpURLConnection) con).setRequestMethod("GET");
            //System.out.println(con.getContentLength()) ;
            con.setConnectTimeout(5000);
            BufferedInputStream in = new BufferedInputStream(con.getInputStream());
            int responseCode = con.getResponseCode();
            if (responseCode == HttpURLConnection.HTTP_OK) {
                System.out.println(responseCode);
            }
            StringBuffer buffer = new StringBuffer();
            int chars_read;
            //int total = 0;
            while ((chars_read = in.read()) != -1) 
            {
                char g = (char) chars_read;
                buffer.append(g);
            }
            final String page = buffer.toString();
            //create password_ems.txt to internal
            if (fileExistance("data.txt")){
                File dir = getFilesDir();
                File file = new File(dir, "data.txt");
                boolean deleted = file.delete();
                stringToTxt(page, "data.txt");


            }else{
                stringToTxt(page, "data.txt");
            }

            if (fileExistance("data_etag.txt")){
                File dir = getFilesDir();
                File file = new File(dir, "etag.txt");
                boolean deleted = file.delete();
                stringToTxt(etag, "etag.txt");


            }else{
                //create etag_file
                stringToTxt(etag, "data_etag.txt");
            }

            //  Log.i("Page", page);
        }catch(Exception e){
            showDialog("Database Fetch Failure","Unable to Fetch Password Database, check your internet" +
                    " connection and try again later.",0);
            Log.i("Page", "Error");
        }

    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-03 16:14:41

如果您对公共或共享的Dropbox执行HTTP HEAD请求,那么您将得到一个etag报头。我不知道这种行为是否得到了保证,因为我不认为它在任何地方都有文档记录,但至少目前可以使用etag头来确定文件何时已经更改。(如果etag不同,则文件已更改。)

编辑

通常,在使用ETags时,最有效的方法是发出带有If-None-Match: <old etag>头的GET请求。如果内容没有更改,这将使用304响应,但如果内容已更改,则将按照正常的GET请求下载新内容(响应将为200)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18596252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档