ckan使用java客户端

时间:2015-10-20 12:16:20

标签: java ckan

我正在尝试在现有资源上添加源URL,但我无法让它工作。

这就是我所拥有的:

HttpEntity reqEntity = MultipartEntityBuilder.create()
           .addPart("id", new StringBody("resource id",ContentType.TEXT_PLAIN))
           .addPart("Source", new StringBody("www.google.com",ContentType.TEXT_PLAIN))          
           .build();
postRequest = new HttpPost(host+"/api/3/action/resource_update");
               postRequest.setEntity(reqEntity);
               postRequest.setHeader("X-CKAN-API-Key", "myApi");

这给了我以下错误:

"success": false, "error": {"__type": "Validation Error", "url": ["Missing value"]}

我上传文件时可以添加Source字段,但不会为其创建链接。也许是因为我使用ContentType.TEXT_PLAIN而不是告诉CKAN这是一个链接的东西?

编辑: 来源我指的是资源信息上的链接,它指向原始数据的网页。手动上传文件时,你有这个选项,我不能让它与API一起使用。

1 个答案:

答案 0 :(得分:0)

错误告诉您没有为资源指定url值,这是必要的。

您POST的内容需要采用JSON格式,而您似乎将其作为多部分表单数据发送。

您需要为资源发送的JSON密钥为idurlnameformat等。即您需要设置urlSource。您可以通过查看/api/action/resource_show?id=xyz来查看现有密钥。

使用resource_update的常规方法是首先执行resource_show,使用新值编辑JSON,然后使用resource_update。这样您就不会丢失资源的任何其他属性,例如format。