我正在尝试在现有资源上添加源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一起使用。
答案 0 :(得分:0)
错误告诉您没有为资源指定url
值,这是必要的。
您POST的内容需要采用JSON格式,而您似乎将其作为多部分表单数据发送。
您需要为资源发送的JSON密钥为id
,url
,name
,format
等。即您需要设置url
比Source
。您可以通过查看/api/action/resource_show?id=xyz
来查看现有密钥。
使用resource_update的常规方法是首先执行resource_show,使用新值编辑JSON,然后使用resource_update。这样您就不会丢失资源的任何其他属性,例如format。