2012-11-21 4 views
5

Ok ive ha studiato questo non ha funzionato da nessuna parte, ha lasciato qualche altro tentativo di risciacquo e ripetizione e diverse settimane più tardi non è più possibile accedere all'API Jiras in modo Spero che grandi persone possano aiutarmi.Accedere all'API Atlantico Jira REST per eseguire un report super semplice su un filtro

Tutto quello che voglio è essenzialmente il login, visualizzare le informazioni da un semplice filtro come tutti gli errori aperti in una pietra miliare. Una volta arrivato così lontano, sono in grado di lavorare sulla documentazione

Sto sperando di usare il semplice PHP, questo perché sono nuovo a PHP, quindi più complicata è la codifica, più sarà difficile per me capirlo.

Questo script è il più vicino ive venuto per avere successo:

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

Esso restituisce il nuovo numero creato il http://mysite.atlassian.net/browse/

ma quando ho messo il var_dump ($ risultato) in là che solo restituisce null così Non ho idea se l'URL di jira è sbagliato o la mia password o se il suo codice obsoleto per il nuovo riposo API.

Se potessi fare solo una semplice query all'API e vedere qualcosa restituito sulla mia pagina php sarei un campeggiatore felice. L'esempio sopra crea un nuovo problema, questo è solo l'esempio che stavo usando, ma sto bene solo restituendo qualsiasi tipo di dati, quindi il mio problema principale è ottenere una connessione valida e restituire alcune informazioni quindi so che funziona e non posso iniziare a provare alcune cose diverse poi.

Ho accesso di amministratore ma non ero chiaro se avessi bisogno di abilitare qualcosa dal lato admin.

risposta

14

ho capito cosa dovevo fare, ci sono un sacco di esempi sulla rete, ma non riuscivo a trovare uno semplice come questo modo si spera che aiuta a qualcun altro

$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

bel lavoro :) puoi accettare la tua risposta, se vuoi;) – Ben

4

ho qualcosa che sarà più prezioso e facile per te controllare questa libreria. è stata l'unica cosa che mi ha salvato il tempo. Ho anche usato il tuo codice ma sul modo in cui il codice è stato difficile per me. ma questa libreria è great.try esso .. :)

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

Fatemi sapere se avete bisogno di aiuto su come usare questo.

3

In seguito a questa pagina ...

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

Abbiamo bisogno di utilizzare l'autenticazione di intestazione in questi giorni che sembra - modificando l'esempio in questo battistrada - come:

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