HP ALM REST API使用Curl&;使用PUT方法发送xml数据;PHP
我试图通过HP ALM REST API使用Curl&;使用PUT方法发送xml数据;PHP,php,xml,rest,curl,Php,Xml,Rest,Curl,我试图通过Curl&PHP使用restapi更新ALM中的测试数据 Step 1 : Check Lock Status => GET method | response => UNLOCKED Step 2 : Acquire Lock => POST method | response <entity data XML> Step 3 : Check Lock Status => GET method | response LOCKED_BY_ME
Curl
&PHP
使用restapi
更新ALM中的测试数据
Step 1 : Check Lock Status => GET method | response => UNLOCKED
Step 2 : Acquire Lock => POST method | response <entity data XML>
Step 3 : Check Lock Status => GET method | response LOCKED_BY_ME
Step 4 : Checkout Versions | Optional
Step 5 : Update data => PUT method | response = http_code = 200 OK
我收到415错误
,无法使用PUT
方法发送数据。
谢谢你的帮助
感谢您在上面的介绍,您的HTTP头似乎位于变量$headers中,但您正在从$header为HTTP头设置curl选项 我今天一直在努力解决HP ALM的类似问题。当我100%确定设置了以下标题时,一切都开始正常工作: 内容类型:application/xml 接受:应用程序/xml 要使HP ALM界面正常工作,似乎需要做三件事:
文档基本上还可以通过。您应该将CURLOPT_infle与PUT操作一起使用。POSTFIELDS是一个POST操作。请进一步解释/扩展您的答案。
$url="http://{Host:port}/qcbin/rest/domains/{domainname}/projects/{Projectname}/tests/{id}/lock";
function update_tests()
{
$qc=$this->curl_auth();
$headers = array("DELETE /HTTP/1.1","Content-Type:text/xml");
curl_setopt($qc, CURLOPT_TIMEOUT, $timeout);
curl_setopt($qc, CURLOPT_URL, $url);
curl_setopt($qc, CURLOPT_RETURNTRANSFER, true);
curl_setopt($qc, CURLOPT_COOKIESESSION, true);
curl_setopt($qc, CURLOPT_COOKIEJAR,BASEPATH .'cookie.txt');
$res_unlock=curl_exec($qc);
$resp=curl_getinfo($qc);
$xml=simplexml_load_string(curl_exec($qc));
if($xml->LockStatus == 'LOCKED_BY_OTHER' || $xml->LockStatus == 'LOCKED_BY_ME')
{
$headers = array(
'Accept: application/xml',
'Content-Type: application/xml',
);
$data= <<<XML
<Entity Type="test">
<Fields>
<Field Name="Name">
<Value>Name of the test</Value>
</Field>
<Field Name="Status">
<Value>Updated Value</Value>
</Field>
</Fields>
</Entity>
XML;
curl_setopt($qc, CURLOPT_URL, $url);
curl_setopt($qc, CURLOPT_HTTPHEADER, $header);
curl_setopt($qc, CURLOPT_HEADER, 1);
curl_setopt($qc, CURLOPT_PUT, 1);
curl_setopt($qc, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($qc, CURLOPT_POSTFIELDS, $data);
curl_setopt($qc, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($qc);
$resp=curl_getinfo($qc);
}
else
{
$data='';
curl_setopt($qc, CURLOPT_URL, $url);
curl_setopt($qc, CURLOPT_HEADER, true);
curl_setopt($qc, CURLOPT_POST, 1);
curl_setopt($qc, CURLOPT_POSTFIELDS, $data);
$res_Lock=curl_exec($qc);
$resp=curl_getinfo($qc);
if($resp['http_code'] == 200)
{
$headers = array(
'Accept: application/xml',
'Content-Type: application/xml',
);
$file = BASEPATH."tests.xml";
$data= <<<XML
<Entity Type="test">
<Fields>
<Field Name="Name">
<Value>Name of the test</Value>
</Field>
<Field Name="Status">
<Value>Updated Value</Value>
</Field>
</Fields>
</Entity>
XML;
curl_setopt($qc, CURLOPT_URL, $url);
curl_setopt($qc, CURLOPT_HTTPHEADER, $header);
curl_setopt($qc, CURLOPT_HEADER, 1);
curl_setopt($qc, CURLOPT_PUT, 1);
curl_setopt($qc, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($qc, CURLOPT_POSTFIELDS, $data);
curl_setopt($qc, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($qc);
$resp=curl_getinfo($qc);
}
}
}