Azure DevOps API — неверный документ исправленияPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Azure DevOps API — неверный документ исправления

Сообщение Anonymous »

Я пытаюсь подключиться к API Azure Dev Ops с помощью PHP, Guzzle и Laravel. Я могу успешно подключиться и ПОЛУЧИТЬ рабочий элемент с помощью приведенного ниже кода:

Код: Выделить всё

Route::get('/getworkitem', function() {

$response = Http::withBasicAuth('Username', 'PAT')
->get('https://dev.azure.com/{Organisation}/{Project}/_apis/wit/workitems/32?fields=System.WorkItemType,System.AssignedTo&$expand=Links&api-version=5.1');

return $response;

});
Я пытаюсь выполнить запрос POST с помощью HTTP-клиента Laravel, чтобы создать новый рабочий элемент с помощью приведенного ниже кода:

Код: Выделить всё

Route::get('/add', function() {

$requiredata = array (
'op' => 'add',
'path' => '/fields/System.Title',
'from' => null,
'value' => 'Sample Task'
);

$response = Http::withBasicAuth('Username', 'PAT')->withHeaders([
'Content-Type' => 'application/json-patch+json',
])->post('https://dev.azure.com/Oraganisation/{Project}/_apis/wit/workitems/$issue?api-version=5.1', [
'body' => json_encode($requiredata,JSON_UNESCAPED_SLASHES)
]);

dd(json_decode($response->getBody()));
});
Однако, когда я запускаю это, я получаю следующий ответ:

Код: Выделить всё

+"$id": "1"
+"innerException": null
+"message": "You must pass a valid patch document in the body of the request."
+"typeName": "Microsoft.VisualStudio.Services.Common.VssPropertyValidationException, Microsoft.VisualStudio.Services.Common"
+"typeKey": "VssPropertyValidationException"
+"errorCode": 0
+"eventId": 3000
Для меня это означает, что оператор «op» в теле ответа неверен, но когда я проверяю, он отправляет правильную информацию.

Затем я попытался выполнить запрос через Guzzle, используя следующее:

Код: Выделить всё

Route::get('/add2', function() {

$headers = [
'Content-Type' => 'application/json-patch+json',
];

$body = [
'op' => 'add',
'path' => '/fields/System.Title',
'from' => null,
'value' => 'Sample Task'
];
$body = json_encode($body,JSON_UNESCAPED_SLASHES);

$client = new Client();

$res = $client->request('POST', 'https://dev.azure.com/{Organisation}/{Project}/_apis/wit/workitems/$Issue?api-version=5.1', [
'auth' => 'Username', 'Password'
], $headers, $body);

dd(json_decode($res->getBody()));

});
Это возвращает значение null.

Мне удалось заставить POST-запрос работать в Почтальон, но не на PHP. Я просмотрел Google и не нашел ничего, что указывало бы на то, что я сделал неправильно, но если кто-то сможет указать мне правильное направление, почему он работает как GET, а не как POST, это было бы очень признательно.

Подробнее здесь: https://stackoverflow.com/questions/615 ... h-document
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»