我尝试使用纯PHP调用Azure DevOps API REST来创建发布管道。主体所需的json与POSTMAN一起工作,但PHP返回此错误:
[内部异常] =〉[消息] =〉VS402903:指定的值无法转换为ReleaseStartMetadata类型。请确保该值可以转换为ReleaseStartMetadata类型,然后重试。[类型名称] =〉Microsoft.VisualStudio.服务.ReleaseManagement.数据.异常。无效请求异常,Microsoft. VisualStudio.服务. ReleaseManagement2.数据[类型键] =〉无效请求异常[错误代码] =〉0 [事件ID] =〉3000)
这没有任何意义,但我认为有一些关于信息的返回,而不是通过身体发送的信息。
下面是我的代码:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$pat='hidden';
$url = 'https://vsrm.dev.azure.com/org-id/workspace-name/_apis/release/releases?api-version=6.0';
$body = '{
"definitionId": 1,
"description": "test",
"name": "test",
"isDraft": false,
"reason": "manual"
}';
$data_json = json_encode($body);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8; api-version=6.0','Authorization: Basic '.$pat));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$data = json_decode($response, true);
print_r ($data);
curl_close($ch);
?>
1条答案
按热度按时间mf98qq941#
我找到了答案,错误是因为我通过主体发送的json有一些转义字符\n\等。
有了这个,我已经清理了它,并把它放在$data_json = json_encode($body)下面;
在后置选项
curl_setopt($ch, CURLOPT_POSTFIELDS,$body_formatted);
上使用body_formatted希望对大家都有帮助。