2012-11-21 2 views
5

Ok ive researched this, 아무데도 남지 않았습니다. 몇 번 더 시도해 보았습니다. 몇 주 후에 Jiras API에 액세스 할 수있게되었습니다. 당신이 위대한 사람들이 나를 도와 줄 수 있기를 바래요.Atlassian Jira REST API를 사용하여 필터에서 매우 간단한 보고서를 실행합니다.

내가 원했던 모든 것은 기본적으로 열려있는 모든 버그와 같은 간단한 필터에서 정보를 표시하는 것입니다. 일단 내가 멀어지게되면 문서화 작업을 할 수있게된다.

Im은 간단한 PHP를 사용하기를 바래다. PHP에 익숙하지 않기 때문에 코딩이 복잡해지면 알아내는 것이 더 어려워진다.

이 스크립트는 성공 인에 와서 필자 가장 가까운 :

<?php 

define('JIRA_URL', 'https://mysite.atlassian.net'); 
define('USERNAME', '[email protected]'); 
define('PASSWORD', '11111'); 

function post_to($resource, $data) { 
     $jdata = json_encode($data); 
     $ch = curl_init(); 
     curl_setopt_array($ch, array(
       CURLOPT_POST => 1, 
       CURLOPT_URL => JIRA_URL . '/rest/api/2/' . $resource, 
       CURLOPT_USERPWD => USERNAME . ':' . PASSWORD, 
       CURLOPT_POSTFIELDS => $jdata, 
       CURLOPT_HTTPHEADER => array('Content-type: application/json'), 
       CURLOPT_RETURNTRANSFER => true 
     )); 
     $result = curl_exec($ch); 
     curl_close($ch); 
     return json_decode($result); 
} 

function create_issue($issue) { 
     return post_to('issue', $issue); 
} 

$new_issue = array(
     'fields' => array(
       'project' => array('key' => 'FOO'), 
       'summary' => 'Test via REST', 
       'description' => 'Description of issue goes here.', 
       'issuetype' => array('name' => 'Story') 
     ) 
); 

$result = create_issue($new_issue); 
if (property_exists($result, 'errors')) { 
     echo "Error(s) creating issue:\n"; 
     var_dump($result); 
} else { 
     echo "New issue created at " . JIRA_URL ."/browse/{$result->key}\n"; 
     var_dump($result); 
} 
?> 

http://mysite.atlassian.net/browse/

에서 만든 새로운 문제를 반환하지만 난 거기에 위해서 var_dump ($ 결과)를 둘 때 그것은 단지 널 너무 반환 jira URL이 틀리거나 암호가 맞는지 또는 새로운 나머지 API에 대한 오래된 코드인지는 알 수 없습니다.

API에 대한 간단한 쿼리를 만들고 PHP 페이지에서 반환 된 내용을 볼 수 있다면 나는 행복한 캠프가 될 것입니다. 위의 예는 새로운 문제를 만듭니다. 예를 들어 제가 사용하고있는 예제가 있지만 어떤 종류의 데이터라도 반환하는 것으로 괜찮습니다. 따라서 주된 문제는 유효한 연결을 얻고 일부 정보를 반환하므로 작업과 캔트가 다른 것을 시도하기 시작합니다. 그때.

관리자 액세스 권한이 있지만 관리자 측에서 무언가를 활성화해야한다면 명확하지 않습니다.

답변

14

나는 내가, 그물에 예제가 많이있다을 할 필요가 무엇인지 생각하지만 난 그렇게 희망이

$username = 'xxx'; 
$password = 'xxx'; 

$url = 'https://xxx.atlassian.net/rest/api/2/Issue/Bug-5555'; 

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_USERPWD, "$username:$password"); 
curl_setopt($curl, CURLOPT_URL, $url); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); 

$issue_list = (curl_exec($curl)); 
echo $issue_list; 
+0

좋은 일 :) 당신이 원하면 당신 자신의 대답을 받아 들일 수 있습니다;) – Ben

4

내가 더 가치가있을 것입니다 무언가를 다른 사람이 도움이 같은 간단한을 찾을 수 couldnt한다 이 라이브러리를 확인하기가 쉽습니다. 내 시간을 절약 한 것은 유일한 것입니다. 코드를 사용했지만 코드가 어려웠습니다. 하지만이 라이브러리는 그것을 great.try입니다 .. :)

https://github.com/FayP/JIRA-php

는이를 사용하는 방법에 대한 도움이 필요하면 알려주세요.

3

해당 페이지로 다음 ...

https://developer.atlassian.com/jiradev/api-reference/jira-rest-apis/jira-rest-api-tutorials/jira-rest-api-example-basic-authentication

우리는 헤더 인증을 사용할 필요가

보이는 요즘 -이 트레드의 예제를 수정 - 같은 :

$username = 'user'; 
$password = 'pass'; 

$url = 'https://www.jiradomain.com/rest/api/2/issue/PROJECT-321/worklog'; 

$curl = curl_init(); 

curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: Basic ' . base64_encode("$username:$password")));** 
curl_setopt($curl, CURLOPT_URL, $url); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($curl, CURLOPT_VERBOSE, true); 

$verbose = fopen('php://temp', 'rw+'); 
curl_setopt($curl, CURLOPT_STDERR, $verbose); 

$issue_list = (curl_exec($curl)); 
echo $issue_list; 

$result = curl_exec($curl); 
if ($result === FALSE) { 
    printf("cUrl error (#%d): %s<br>\n", curl_errno($curlHandle), 
      htmlspecialchars(curl_error($curlHandle))); 
} 

rewind($verbose); 
$verboseLog = stream_get_contents($verbose); 

echo "Verbose information:\n<pre>", htmlspecialchars($verboseLog), "</pre>\n";