我正在使用PHP和curl并试图在Rally中创建一个缺陷。
<?php
define('XML_POST_URL', 'https://rally1.rallydev.com/slm/webservice/1.29/defect/create');
/**
* Initialize handle and set options
*/
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, XML_POST_URL);
curl_setopt($ch, CURLOPT_USERPWD, '[USERNAME]:[PASSWORD]');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 4);
curl_setopt($ch, CURLOPT_POSTFIELDS, '<Defect> <Description>blah blah blah</Description> <Name>my defect</Name> <Priority>None</Priority> <ReleaseNote>false</ReleaseNote> <Severity>Major Problem</Severity> <State>Open</State> <Owner ref=\"https://rally1.rallydev.com/slm/webservice/1.29/user/[USERID]\"/> </Defect>');
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
$result = curl_exec($ch);
/**
* Check for errors
*/
if ( curl_errno($ch) ) {
$result = 'cURL ERROR -> ' . curl_errno($ch) . ': ' . curl_error($ch);
echo "ERROR! " . $result;
} else {
$returnCode = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE);
switch($returnCode){
case 200:
break;
default:
$result = 'HTTP ERROR -> ' . $returnCode;
break;
}
}
curl_close($ch);
$xml_parser = xml_parser_create();
xml_parse($xml_parser, $result);
$returnXML = new SimpleXMLElement($result);
echo "<br>" . $returnXML->asXML();
&GT;
尝试打印returnXML时,出现以下错误:
无法将输入流解析为XML文档:第1行出错:打开引号 期望与元素类型“ref”关联的属性“{1}”。
当我做print_r时,我看到了:
SimpleXMLElement对象([@attributes] =&gt;数组([rallyAPIMajor] =&gt; 1 [rallyAPIMinor] =&gt; 29)[错误] =&gt; SimpleXMLElement对象([OperationResultError] =&gt;无法解析输入流为XML文档:第1行出错:对于与元素类型“ref”相关联的属性“{1}”,需要打开引号。)[警告] =&gt; SimpleXMLElement对象())
我希望看到与此示例类似的内容:https://rally1.rallydev.com/slm/doc/webservice/rest_xml.jsp
错误消息听起来像ref有什么问题,这是其中的一部分。有谁知道我做错了什么?谢谢你的帮助。
答案 0 :(得分:0)
我更改了"<Owner ref=\"https://rally1.rallydev.com/slm/webservice/1.29/user/[USERID]\"/>
到
<Owner user/[USERID]/>
这似乎可以解决问题!
答案 1 :(得分:0)
“Owner”元素的“ref”属性中的双引号字符前面有一个不需要的斜杠。
<Owner ref=\"https://rally1.rallydev.com/slm/webservice/1.29/user/[USERID]\"...
应该是:
<Owner ref="https://rally1.rallydev.com/slm/webservice/1.29/user/[USERID]"...