2012-01-17 9 views
3

Mathematicaを使用してCouchDbデータベースに文書を挿入する方法を探しています。 thisポストに基づいて、私は次のコード使用して、それを試してみました:Mathematicaを使用してCouchDbに文書を挿入する

InsertDocument[key_, value_] := 
With[{url = 
    "http://couchdburl/database/"}, 
Import[url, "XML", "RequestMethod" -> "POST", 
"RequestParameters" -> {"key" -> key, "value" -> value}]] 

をしかし、私は、例えば、このようにそれを実行しようとすると:

InsertDocument[110, 1] 

私は次のエラーを取得:

Import::erropts: The value {key->110,value->1} specified for the option RequestParameters is invalid. >>

編集:

kgulerのコメントに続いて、私はパラメータを文字列に置き換え、前のエラーは消えました。 また、私のコードサンプルでforgotten}を修正し、urlとkeyパラメータの連結を削除しました。ダミー文書使って、

Throw::nocatch: Uncaught Throw[Null,Utilities URLTools Private URLTOOLSException[Utilities URLTools Private BADCONNECTION, http://couchdburl/database/]] returned to top level. >>

私はCouchDBのURLにカール使用して要求を作ってみました: 今、私は別のエラーを経験してい

curl -X POST http://couchdburl/database/ -H "Content-Type: application/json" -d {} 

をし、応答が予想通りだった:

{ "OK":真、 "ID": "57291ccea74c455beb2d7a37fe001624"、 "REV": "1-967a00dff5e02add41819138abb3284d"}

私はまだする必要があります任意のオプションをしないのですインポート機能で使用されていますか? content-typeをapplication/jsonとして設定するオプションはありますか?

+1

てみました"RequestParameters" - > {"key" - > ToString @ key、 "value" - > ToString @ value}]] '?ところで、最後の行に右かっこ '}'がありません。 – kglr

答えて

1

私はthis SOの質問に提示されているのと同じアイデアに従ってそれをすることができました。

は、いくつかの問題の後、次のコードでは、働いていた:あなたは `渡された引数の文字列を作成する(` InsertDocument [「100」、「1」] `)したり、コードの最後の行を作る

<< JLink` 

client = JavaNew["org.apache.commons.httpclient.HttpClient"]; 

method = JavaNew["org.apache.commons.httpclient.methods.PostMethod", 
    "http://couchdburl/database/"]; 

[email protected]["Content-Type", "application/json"]; 

entity = 
JavaNew["org.apache.commons.httpclient.methods.StringRequestEntity", 
    "{\"key\":\"10\",\"value\":\"0\"}", "application/json", Null] 

[email protected][entity] 

[email protected][method] 
関連する問題