2012-11-21 27 views
5

Ok ive badane to nigdzie nie było, zostawiłem go na chwilę, próbowałem kilku kolejnych prób przepłukać i powtórzyć i kilka tygodni później nie zbliżam się do uzyskania dostępu do API Jiras więc mam nadzieję, że ci wspaniali ludzie mogą mi pomóc.Uzyskaj dostęp do Atlassian Jira REST API, aby uruchomić super prosty raport na filtrze

Wszystko czego chcę, to w zasadzie zalogować się, wyświetlać informacje z prostego filtru, jak wszystkie otwarte błędy w kluczowym momencie. Gdy tylko dostanę tak daleko, będę w stanie przerobić dokumentację, mam nadzieję, że użyję prostego PHP, to dlatego, że jestem nowy w PHP, więc im bardziej skomplikowane jest kodowanie, tym trudniej będzie mi je rozgryźć.

Skrypt ten jest najbliższy Ive przychodzą do bycia sukces:

<?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); 
} 
?> 

Zwraca nowej emisji utworzony w http://mysite.atlassian.net/browse/

Ale kiedy umieścić var_dump ($ result) tam, że po prostu zwraca null tak Nie mam pojęcia, czy adres url jira jest błędny, czy moje hasło, czy też jego przestarzały kod dla nowego interfejsu api.

Jeśli mógłbym wykonać jedno proste zapytanie do API i zobaczyć wszystko, co zostało zwrócone na mojej stronie php, byłbym szczęśliwym kamperem. Powyższy przykład tworzy nowy problem, to tylko przykład, którego używałem, ale jestem w porządku po prostu zwracając jakiekolwiek dane, więc moim głównym problemem jest uzyskanie poprawnego połączenia i zwrócenie niektórych informacji, więc wiem, że działa i nie mogę zacząć próbować różnych rzeczy następnie.

Mam dostęp administracyjny, ale nie było jasne, czy muszę włączyć coś po stronie administratora.

Odpowiedz

14

zorientowali się, co muszę zrobić, istnieje wiele przykładów w internecie, ale nie mogłem znaleźć ani jednego prostego jak to, więc mam nadzieję, że to pomoże ktoś inny

$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

ładne prace :) możesz zaakceptować własną odpowiedź, jeśli chcesz;) – Ben

4

mam coś, co będzie bardziej wartościowe i łatwo można sprawdzić tę bibliotekę. To była jedyna rzecz, która uratowała mój czas.i wykorzystała nawet twój kod, ale w sposób, w jaki kod był dla mnie trudny. ale ta biblioteka jest great.try go .. :)

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

dać mi znać, jeśli potrzebujesz pomocy w jaki sposób to wykorzystać.

3

W następstwie tej stronie ...

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

Musimy wykorzystać te dni nagłówka uwierzytelniania która wygląda - modyfikując przykład w tym bieżniku - takie jak:

$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";