0

我正在尝试使用内容协商来提供 HTTP 服务器上资源的 HTML 和 RDF/XML 表示。在服务器端这有效,即

curl -H "Accept: application/rdf+xml" http://localhost:8182/ontologies/1

将检索正确的版本。我也可以用 JavaScript/Dojo 做同样的事情:

function downloadOntologyRDF(ontologyId) {
    dojo.xhrGet( {
        url:"${baseUrl}/ontologies/" + ontologyId,
        headers: {"Accept": "application/rdf+xml"},
        timeout: 5000,
        load: function(response, ioArgs) {
            var preNode = document.createElement("pre");
            preNode.appendChild(document.createTextNode(response));
            var foo = new dijit.Dialog({
                title: "RDF",
                content: preNode,
                style: "overflow: auto;"
            });
            foo.show();
            return response;
        },
        error: function(response, ioArgs) {
            alert("Retrieving the RDF version failed: " + response);
            return response;
        }
    });
}

这将在弹出对话框中显示结果。我被卡住的地方是为用户提供了一种下载此版本的方法。我想在页面上有一个链接,可以在浏览器中将 RDF 显示为页面,或者直接打开保存对话框。如果不求助于查询参数或其他技巧,这是否可能?

4

2 回答 2

0

这个页面解释了如何设置一个将在浏览器中显示 RDF 的 aspx 页面。它可能会帮助你。虽然我不能确定,因为您已经指定了您在服务器上运行的内容。

构建 RSS 提要变得简单

于 2009-03-20T05:27:34.823 回答
0

就像 cobbal 提到的那样 - 因为您不能在 URL 本身中设置 Accept 标头,所以您应该有额外的内容协商机制。一些框架允许在表单中设置内容类型

http://example.com/resource;format

formatURL 末尾有 ,用分号隔开。然后,在处理请求时,它会解析出格式部分。

在您的情况下,它可能类似于

http://localhost:8182/ontologies/1;rdf

到服务器 rdf,并且没有指定格式来提供您接受标头中的任何内容。

于 2009-05-07T12:27:57.033 回答