按照这里所说的,我使用这个 curl 拒绝了一个连接:
curl -v -H "Content-Type: application/json" -H "Accept: application/xml" -H "X-Auth-Token: 756cfb31e062216544215f54447e2716" -H "Tenant-Id: your-tenant-id" -X POST "http://saggita.lab.fi-ware.org:8080/sdc/rest/vdc/{your-tenant-id}/productInstance"
我将其更改为看起来合适的 URL:
cat test-data | curl --insecure -v -H "Content-Type: application/json" -H "Accept: application/xml" -H "X-Auth-Token: 756cfb31e062216544215f54447e2716" -H "Tenant-Id: your-tenant-id" -X POST "https://saggita.lab.fi-ware.org:8443/sdc/rest/vdc/{your-tenant-id}/productInstance" --data-binary @-
评论:我使用文件 test-data 作为有效负载,稍后我会显示我正在使用的有效负载。
通过该请愿书(使用适合我的环境的身份验证令牌和特定参数),我得到:
Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
似乎期待 JSON 而不是 XML,所以我重新排列如下:
cat test-data | curl --insecure -v -H "Content-Type: application/xml" -H "Accept: application/xml" -H "X-Auth-Token: 756cfb31e062216544215f54447e2716" -H "Tenant-Id: your-tenant-id" -X POST "https://saggita.lab.fi-ware.org:8443/sdc/rest/vdc/{your-tenant-id}/productInstance" --data-binary @-
无论我如何更改有效负载,我都会收到此消息:
{"message":"The entity is not valid","code":42}
我尝试了这两个有效负载(以安装 apache 为例):
<productInstanceDto>
<vm>
<ip>MYIP</ip>
<fqn>same as hostname, I don't have DNS resolution</fqn>
<hostname>MYHOSTNAME</hostname>
</vm>
<product>
<productDescription/>
<name>apache2</name>
</product>
<attributes>
<key>custom_att_02</key>
<value>default_value_plain</value>
<type>Plain</type>
</attributes>
</productInstanceDto>
我认为这是一个非常简约且清晰的有效载荷
<productInstanceDto>
<vm>
<ip>MYIP</ip>
</vm>
<product>
<name>apache2</name>
</product>
</productInstanceDto>
顺便说一句,我看到 fqdn (可能丢失,该服务器上没有 dns 解析),版本(为什么我必须知道我要安装的产品的版本,这没有出现在产品目录中)之类的不幸字段,VM_ID参数的缺失:可用、简单、唯一。
我做错了什么?谢谢