2016-03-02 18 views
6

Vorrei utilizzare un'API JIRI REST, ma non ho avuto esito positivo.Consumare un'API Jira REST

Il sito Jira ha pronunciato la seguente richiesta URL:

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

E questo è l'array JSON, che si trova su un file chiamato 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" 
          } 
      } 
     ] 

}

Quello che segue è il codice:

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

Quando lo eseguo, non succede nulla. Non ho feedback

L'ho trovato here e ho sostituito le informazioni con le mie informazioni valide.

+0

Hai una risposta dal req 'cURL'? provate anche a stampare '$ json_raw' per il debugging – Pogrindis

+0

E' più cosa, usate 'echo' il JSON di nuovo al chiamante invece di' print_r' – Pogrindis

+0

@Pogrindis ho provato a farlo eco, ancora nessun risultato. Non sono sicuro di cosa debba essere sostituito in quella richiesta di richiamo. È la mia prima volta a occuparmene – kya

risposta

1

In primo luogo definire alcune variabili globali utile per aiutare:

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

allora abbiamo bisogno di definire un metodo POST:

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

Allora come vogliamo usare è in questo modo:

Crea un nuovo numero

$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') 
    ) 
); 

Chiama il nostro funzione di passaggio già fatto nel nuovo numero:

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

un esempio di base di pubblicazione di un nuovo numero tramite REST

Nota: L'URL API Jira può avere bisogno di essere configurato un po '

+0

i dati sarebbero l'array json? – kya

+0

@kya sì, infatti, aggiornato! Se passi in array JSON diretto non usi la variabile '$ new_issue' – Pogrindis

+0

Ora ottengo i seguenti errori: Array alla conversione stringa su questa riga CURLOPT_URL => JIRA_URL. '/ rest/api/2/issue/createmeta'.$ risorsa e il seguente errore: Avviso: il primo parametro deve essere un oggetto o il nome di una classe esistente su questa riga: if (proprietà_esistenze ($ risultato, 'errori')) – kya