php - Actualizando un problema jira con el resto api. NO jabón
curl (2)
No estoy seguro, probemos algo:
cambio
CURLOPT_HTTPHEADER => array(''Content-type: application/json''),
a:
CURLOPT_HTTPHEADER => array(
''Accept: application/json'',
''Content-Type: application/json''
);
y:
$new_issue = array(
''update'' =>array(
''fields'' => array(
''project'' => array(''key'' => ''DOTNET''),
''summary'' => ''Test via REST'',
''description'' => ''Description of issue goes here.'',
''issuetype'' => array(''name'' => ''Task'')
))
);
a:
$new_issue = array(
''fields'' => array(
''project'' => array(''key'' => ''DOTNET''),
''summary'' => ''Test via REST'',
''description'' => ''Description of issue goes here.'',
''issuetype'' => array(''name'' => ''Task'')
)
);
por último, cambiar:
CURLOPT_URL => JIRA_URL . ''/rest/api/latest/'' . $resource,
a su dirección real, así como escribir 2
lugar de la latest
, es decir:
CURLOPT_URL=>''http://localhost/rest/api/2/issue/'',
prueba esto y cuéntame cómo va, ¡buena suerte!
EDITAR
intente cambiar:
CURLOPT_POST => 1,
a:
CURL_POST=>true,
CURLOPT_VERBOSE=>1,
por cierto, ¿dónde está tu servidor jira? ¿No dijiste que estaba alojado? localhost:8080
solo funcionará si Jira se instala localmente. Si es así, intente abrirlo usando un navegador http://localhost:8084/rest/api/2/issue/
EDIT 2
Asegúrese de que la Allow Remote API Calls
esté activada en Administración> Configuración general.
para actualizar un problema:
la URL debe señalar el problema que se actualizará próximamente, es decir:
http://localhost/rest/api/2/issue/TEST-31
y los datos deberían ser los mismos que antes, lo que significa:
$new_issue = array(
''fields'' => array(
''project'' => array(''key'' => ''DOTNET''),
''summary'' => ''Test via REST'',
''description'' => ''Description of issue goes here.'',
''issuetype'' => array(''name'' => ''Task'')
)
);
tal como lo escribió cuando intentó crear un problema. puedes encontrar aquí un ejemplo simple de cómo hacerlo.
EDIT 3
¿Estás seguro de que tienes la dirección Jira correcta? intente de nuevo abrir un navegador y vaya a la URL y compárela con este ejemplo . Si la página no se muestra, deberá ponerse en contacto con el soporte de Jira y preguntarles cómo es que no puede acceder a la API remota de Jira alojada.
mi función php para actualizar el problema de jira es así. He codificado el id.it id. genera un error en if (property_exists($result, ''errors''))
. decir el parámetro no es un objeto.
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/latest/'' . $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/10224/editmeta'', $issue);
}
$new_issue = array(
''update'' =>array(
''fields'' => array(
''project'' => array(''key'' => ''DOTNET''),
''summary'' => ''Test via REST'',
''description'' => ''Description of issue goes here.'',
''issuetype'' => array(''name'' => ''Task'')
))
);
$result = create_issue($new_issue);
if (property_exists($result, ''errors'')) {
echo "Error(s) creating issue:/n";
var_dump($result);
}
}
¿Qué estoy haciendo mal aquí? por favor conteste.
editmeta debe usarse solo para OBTENER metadatos de un problema.
Para actualizar un problema, debes usar el método de emisión .
Puede verificar los detalles de la API de Jira aquí: https://docs.atlassian.com/jira/REST/cloud/#api/2/