2009-03-20 7 views
0

コンテンツネゴシエーションを使用して、HTTPサーバー上のリソースのHTMLとRDF/XML表現の両方を提供しようとしています。サーバ側では、これは動作します。すなわち、ブラウザ内から非HTMLコンテンツタイプのファイルをダウンロードするにはどうすればよいですか?

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

が正しいバージョンを取得します。

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をブラウザのページとして表示するか、または保存ダイアログを直接開くかのいずれかのページにリンクが必要です。これは、クエリパラメータや他のトリックに頼らずに可能ですか?

+0

クエリパラメータのようなサーバー側のもの以外の方法がないと思われます。 – cobbal

答えて

0

は言及 - あなたはURL自体にヘッダを受け入れる設定することができないので、あなたは追加のコンテンツネゴシエーションメカニズムを持つ必要があります。いくつかのフレームワークは、コンテンツタイプはセミコロンで区切られ、URLの末尾にformatを持つフォーム

http://example.com/resource;format 

に設定することができます。そして、要求を処理するときに、フォーマット部分を解析します。

あなたのケースでは、サーバのRDF、およびお使いの受け入れヘッダーにあるものは何でも提供するために指定されていない形式に

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

のようなものである可能性があります。

+0

それは私のために「クエリパラメータと他のトリック」として分類されます;-)しかし、私はちょうどこの答えを "いいえ"の長いバージョンとして受け入れます。 –

+0

私は、セミコロンは良いアイデアだと思っていましたが、それはビジネス上のより多くの問題とそれほど優雅さをもたらしませんでした。あなたはそれを解析しなければならないか、ルーティングテーブルで設定しなければなりません。私のために、私はパラメータlocalhost:8182/ontologies/1?format = rdf –

0

このページでは、RDFをブラウザに表示するaspxページを設定する方法について説明します。それはあなたを助けるかもしれません。あなたがあなたのサーバ上で実行しているものを指定しているので、私は確信することはできません。 cobbal同様

Building an RSS feed made simple

+0

Java/Restletsを使用していますが、サーバー側が既にcurl/JSの例ショー。 RSSフィードは、独自のURLで別々のリソースとみなされます。私がしようとしているのは、コンテンツネゴシエーションを使用して同じリソースの異なるバリアントを取得することです。 –

関連する問題