Неправильный запрос API Bitbucket при попытке слияния

0

Это мой код:

$url = "https://bitbucket.org/api/2.0/repositories/***/***/pullrequests/35/merge";

$curl1 = curl_init();   

curl_setopt($curl1, CURLOPT_HTTPAUTH, CURLAUTH_BASIC ); 
curl_setopt($curl1, CURLOPT_USERPWD, "***:***");
curl_setopt($curl1, CURLOPT_HEADER, true); 
curl_setopt($curl1, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($curl1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl1, CURLOPT_URL, $url);
curl_setopt($curl1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl1, CURLOPT_POST, true);

echo curl_exec($curl1);

Это ответ:

HTTP/1.1 400 BAD REQUEST Server: nginx/1.5.10 Date: Wed, 04 Mar 2015 06:03:15 GMT Content-Type: text/plain Content-Length: 11 Connection: keep-alive X-Served-By: app19 X-Render-Time: 0.0410010814667 Content-Language: de X-Static-Version: 572a80470390 Vary: Authorization, Accept-Language, Cookie X-Version: 1d224fb664b6 ETag: "825644f747baab2c00e420dbbc39e4b3" X-Request-Count: 27 X-Frame-Options: SAMEORIGIN Bad Request

Почему это не работает? (Из соображений безопасности я заменил некоторые данные ***)

Теги:
curl
bitbucket
bitbucket-api

1 ответ

1
Лучший ответ

Вам не хватает обязательных параметров для этой конкретной конечной точки, которые должны быть включены в ваш орган запроса.

Согласно API, этими обязательными параметрами являются owner, repo_slug и pull_request_id.

$request_body = array(
  'owner'           => 'account-name',
  'repo_slug'       => 'repo-name',
  'pull_request_id' => 35
);

Поскольку вы указали application/json как свой Content-Type, вам нужно json_encode массив сверху:

curl_setopt($curl1, CURLOPT_POSTFIELDS, json_encode($request_body));

В качестве примечания, вы можете использовать Bitbucket-апите библиотеку, которая может помочь вам взаимодействовать с Bitbucket API в более простом способе.

Принятие запроса на извлечение с использованием этой библиотеки выглядит примерно так:

$pull = new Bitbucket\API\Repositories\PullRequests();

// set your login credentials here
$pull->getClient()->addListener(
  new \Bitbucket\API\Http\Listener\BasicAuthListener('username', 'password')
);
$pull->accept($account_name, $repo_slug, 35);

Вы можете прочитать больше в документах.

Отказ от ответственности: я являюсь автором библиотеки bitbucket-api.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню