2015-10-20 150 views
0

我尝试添加在现有资源的源URL添加源链接,但我不能得到它的工作。CKAN使用Java客户端

这是我有:

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

目前还不清楚您是要上传文件还是提供文件的网址。请澄清一下,并提供您试图在API中模拟的Web表单的屏幕截图。 –

回答

0

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

你POST需要在JSON格式,而你出现内容被发送它作为多形式的数据。

你需要发送一个资源的JSON键idurlnameformat等即需要设置url而非Source。您可以通过查看/api/action/resource_show?id=xyz来查看现有的密钥。

使用resource_update正常的方法是先做resource_show,用新值编辑JSON,然后resource_update。这样你就不会失去任何其他的资源属性,比如格式。

+0

根据ckan文档,对于资源更新,它只需要id,而不是url。无论如何,url是什么?当U做手工iploadü可以有,如果你配置它的作品jjust罚款 –

+0

的资源必填字段由数据集架构决定的,所以变化的源场,这就是为什么它没有在文档的resource_update提到。 URL是数据的位置 - 它是资源中最重要的部分。当你在CKAN网络界面上进行上传时,就我所知,该字段仍被称为“URL”。你想上传文件吗?如果是这样,你不能使用resource_update。 –