1

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();

?>

returnXMLを印刷しようとすると、次のエラーが発生します。

入力ストリームをXMLドキュメントとして解析できません:1行目のエラー:要素タイプ「ref」に関連付けられた属性「{1}」にオープンクォートが必要です。

print_rを実行すると、次のように表示されます。

SimpleXMLElement Object([@attributes] => Array([rallyAPIMajor] => 1 [rallyAPIMinor] => 29)[Errors] => SimpleXMLElement Object([OperationResultError] =>入力ストリームをXMLドキュメントとして解析できません:1行目のエラー要素タイプ「ref」に関連付けられた属性「{1}」にはオープンクォートが必要です。)[警告] => SimpleXMLElement Object())

次の例に似たものが表示されることを期待しています:https ://rally1.rallydev.com/slm/doc/webservice/rest_xml.jsp

エラーメッセージは、の一部であるrefに問題があるように聞こえます。誰かが私が間違っていることを知っていますか?助けてくれてありがとう。

4

2 に答える 2

0

から変更しました"<Owner ref=\"https://rally1.rallydev.com/slm/webservice/1.29/user/[USERID]\"/>

<Owner user/[USERID]/>

そして、それはうまくいったようです!

于 2011-12-30T22:32:34.777 に答える
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]"...
于 2011-12-31T17:52:36.573 に答える