2016-03-02 25 views
6

Tôi muốn sử dụng API REST Jira, nhưng đã không thành công.Tiêu thụ API REST Jira

Các trang web cung cấp cho Jira URL yêu cầu sau đây:

curl -D- -u fred:fred -X POST --data {see below} -H "Content-Type: application/json" http://localhost:8090/rest/api/2/issue/ 

Và đây là mảng json, được đặt trên một tập tin gọi là collector.json:

"fields": [ 
      { 
       "project": 
         { 
          "key": "ATL" 
         }, 
       "summary": "REST ye merry TEST.", 
       "description": "Creating of an issue using project keys and issue type names using the REST API", 
       "issuetype": { 
           "name": "Task" 
          } 
      } 
     ] 

}

Sau đây là mã:

<?php 
include_once "collector.php"; 

$jiraValues = jsonArray("collector.json"); 
$jira_url = "http://jira.howareyou.org:8091/rest/api/2/issue/createmeta"; 
$jiraString = json_encode($jiraValues); 

$request = curl_init($jira_url); // initiate curl object 
curl_setopt($request, CURLOPT_HEADER, 0); // set to 0 to eliminate header info from response 
curl_setopt($request, CURLOPT_RETURNTRANSFER, 1); // Returns response data instead of TRUE(1) 
curl_setopt($request, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 

curl_setopt($request, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
curl_setopt($request, CURLOPT_ENCODING, ""); 
curl_setopt($request, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($request, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($request, CURLOPT_POSTFIELDS, $jiraString); // use HTTP POST to send form data 
curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE); // uncomment this line if you get no gateway response. 
curl_setopt($request, CURLOPT_URL, $jira_url); 

$json_raw = curl_exec($request); // execute curl post and store results in $json_raw 

curl_close($request); // close curl object 

// This line takes the response and breaks it into an array using the specified delimiting character 
$jira_response = json_decode($json_raw, TRUE); 

print_r($jira_response); 

Khi tôi chạy nó, Không có gì xảy ra. Tôi không nhận được phản hồi.

Tôi đã tìm thấy số here và thay thế thông tin bằng thông tin hợp lệ của tôi.

+0

Bạn có nhận được phản hồi từ 'cURL' req không? cũng chỉ cần thử in '$ json_raw' để gỡ lỗi – Pogrindis

+0

Và' nhiều thứ nữa, sử dụng 'echo' JSON trở lại người gọi thay vì' print_r' – Pogrindis

+0

@Pogrindis tôi đã cố gắng lặp lại nó, vẫn không có kết quả. Tôi không chắc chắn những gì cần phải được thay thế trong đó cURL req. Lần đầu tiên tôi xử lý nó – kya

Trả lời

1

Thứ nhất xác định một số globals hữu ích để giúp:

define('JIRA_URL', 'http://jira.howareyou.org:8091'); 
define('USERNAME', ''); 
define('PASSWORD', ''); 

Sau đó, chúng ta cần phải xác định một phương pháp bài:

function post_issue($data) { 
    $jdata = json_encode($data); 
    $ch = curl_init(); 
    curl_setopt_array($ch, array(
     CURLOPT_POST => 1, 
     CURLOPT_URL => JIRA_URL . '/rest/api/2/issue/createmeta' . $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); 
} 

Sau đó, làm sao chúng ta muốn sử dụng nó là như vậy:

Tạo sự cố mới

$new_issue = array(
    'fields' => array(
     'project' => array('key' => 'TIS'), 
     'summary' => 'Test via REST', 
     'description' => 'Description of issue goes here.', 
     'priority' => array('name' => 'Blocker'), 
     'issuetype' => array('name' => 'Task'), 
     'labels' => array('a','b') 
    ) 
); 

Gọi chức năng của chúng tôi đi qua thực hiện trước trong vấn đề mới:

$result = post_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"; 
} 

Một ví dụ cơ bản về đăng một vấn đề mới qua REST của

Lưu ý: URL API Jira có thể cần phải được cấu hình hơi

+0

dữ liệu sẽ là mảng json? – kya

+0

@kya có thực sự, cập nhật! Nếu bạn đang đi qua trong mảng JSON trực tiếp không sử dụng '$ new_issue' var – Pogrindis

+0

Tôi nhận được các lỗi sau ngay bây giờ: Mảng để chuyển đổi chuỗi trên dòng này CURLOPT_URL => JIRA_URL. '/ rest/api/2/issue/createmeta'.$ resource và lỗi sau: Cảnh báo: Tham số đầu tiên phải là đối tượng hoặc tên của lớp hiện có trên dòng này: if (property_exists ($ result, 'errors')) – kya

Các vấn đề liên quan