2012-11-21 63 views
5

好了,我研究了這一點,沒有做任何事情,只花了一段時間,嘗試了幾次嘗試沖洗並重復,幾個星期後,我沒有更接近訪問Jiras API我希望你們偉大的人能夠幫助我。訪問Atlassian Jira REST API以在過濾器上運行超級簡單報告

我想要的基本上就是登錄,像簡單的過濾器一樣顯示信息,就像里程碑中所有打開的錯誤一樣。一旦我得到那個患病能夠處理文檔

我希望能夠使用簡單的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($結果)剛剛返回null如此我不知道如果jira網址是錯誤的或我的密碼,或者如果它過時的代碼爲新的休息api。

如果我只能對API進行1個簡單的查詢,並查看我的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

我有什麼事情,會更有價值並且容易爲你檢查這個library.it是唯一保存我的時間的東西。我甚至使用你的代碼,但是代碼對我來說很難。但這個庫是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";