如何使用PHP中的Rally Web Services API更新缺陷

时间:2014-03-18 15:59:34

标签: php web-services rally

我正在尝试更新PHP中的Rally缺陷。我有查询 - 身份验证 - 等部分工作。我可以找到要编辑的缺陷的ObjectID。我发布到另一个问题中概述的网址。

发布后使用'创建'端点附加了安全令牌。在此示例中,123456789是缺陷的OID,其中“描述”字段正在更新

https://rally1.rallydev.com/slm/webservice/v2.0/defect/123456789?key=fbaa0c04-...

问题是此POST的结果是原始缺陷,并且缺陷未更新。我没有收到错误消息,只是没有更新生效。我是否误解了帖子使用'创建'终点?只有在URL上未提供密钥时才会出现这种情况。它似乎充当了缺陷的GET。

问题在于key参数的值。此调用的有效内容必须只包含对象JSON。但我无法通过密钥验证。

我进行调用以获取安全令牌两次,以确保我的卷曲会话有效并获得相同的密钥。哪个是对的。然后我立即使用该密钥并获得一个"无效密钥"响应。

2 个答案:

答案 0 :(得分:1)

以下步骤来自浏览器REST客户端,而不是特定于PHP 假设已经获得了安全密​​钥。

创建缺陷:

网址:

https://rally1.rallydev.com/slm/webservice/v2.0/Defect/create?key=f8e4afc5-....

方法: POST

有效载荷:

{
"Defect":{
"Name": "bad defect"
}

更新相同的缺陷:

浏览器维护会话,只要会话未终止,就可以使用相同的安全令牌。

如果会话终止,例如。由于用户或由于不活动,必须请求新令牌。 下面假设相同的令牌仍然有效。 请注意,有效负载必须仅包括正在更新的字段,但是"缺陷"还必须指定工作项类型。

网址:

https://rally1.rallydev.com/slm/webservice/v2.0/defect/15297487557?key=f8e4afc5-....

方法: POST

有效载荷:

{"Defect":{
"Description":"pretty bad defect",
"State":"Open",
"Owner":"/user/12361716944"
}
}

浏览器自动维护会话,并且Rally支持的Ruby,Java或.NET REST工具包也会为用户负责,但是使用PHP,您需要手动在代码中执行此操作。关于cURL示例的This post可能有所帮助。

答案 1 :(得分:0)

从 url 中删除 key= 并将值添加到标题中作为 zsessionid