【问题标题】:Insert document into CouchDB using Mathematica使用 Mathematica 将文档插入 CouchDB
【发布时间】:2012-02-12 18:13:52
【问题描述】:

我正在寻找一种使用 Mathematica 将文档插入 CouchDB 数据库的方法。 基于this 的帖子,我使用以下代码进行了尝试:

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

但是当我尝试像这样执行它时,例如:

InsertDocument[110, 1]

我收到以下错误:

Import::erropts: 为选项 RequestParameters 指定的值 {key->110,value->1} 无效。 >>

编辑:

按照kguler的评论,我将参数转换为字符串,之前的错误消失了。 我还修复了代码示例中被遗忘的 },并删除了 url 与 key 参数的连接。 现在我遇到了另一个错误:

Throw::nocatch: Uncaught Throw[Null,UtilitiesURLToolsPrivateURLTOOLSException[UtilitiesURLToolsPrivateBADCONNECTION,http://couchdburl/database/]] 返回顶层。 >>

我尝试使用 curl 向 couchDb url 发出请求,使用虚拟文档:

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

反应如预期:

{"ok":true,"id":"57291ccea74c455beb2d7a37fe001624","re​​v":"1-967a00dff5e02add41819138abb3284d"}

我是否仍然缺少导入功能中应该使用的任何选项? 也许有一些选项可以将内容类型设置为 application/json?

【问题讨论】:

  • 您是否尝试制作传递的参数字符串 (InsertDocument["100","1"]) 或制作代码的最后一行 "RequestParameters" -> {"key" -> ToString@key, "value" -> ToString@value}]]?顺便说一句,您在最后一行缺少右括号 }

标签: http wolfram-mathematica couchdb


【解决方案1】:

我按照this SO 问题中提出的相同想法设法做到了。

一些问题后,下面的代码工作:

<< JLink`

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

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

method@setRequestHeader["Content-Type", "application/json"];

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

method@setRequestEntity[entity]

client@executeMethod[method]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多