HTTP-запрос не выполнен! HTTP / 1.1 400 неверный запрос

Я пытаюсь создать проблему в Jira.

Я могу сделать запрос GET с правильным ответом, но проблема возникает, когда я делаю запрос POST. Вот код.

<?php

$userName ='xxxxxxxxxxxxxxxx';
$password ='xxxxxxxxxxxx';

$data = ['fields' => ['projects'=>['key'=>'ABC'],'summary'=>'abc','description'=>'abc','issuetype'=>['name'=>'Task']]];

$data = http_build_query($data);
$context =
array("http"=>
array(
"method" => "POST",
"header" => "Authorization: Basic " . base64_encode($userName.':'.$password) . "\r\n".
'Accept: application/json'."\r\n".
"Content-Length: ".strlen($data)."\r\n".
'Content-Type: application/json'."\r\n",
'content' => $data,
'verify_peer'=>false,
'verify_peer_name'=>false,
)
);
$context = stream_context_create($context);
$result = file_get_contents("https://xxxxx.atlassian.net/rest/api/2/issue/", false, $context);
echo "The result is ", $result;

?>

Я получаю следующую ошибку:

Warning:file_get_contents(https://xxxxx.atlassian.net/rest/api/2/issue/):
failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in
/var/www/html/test/new.php on line 27

Кто-нибудь может мне помочь? Спасибо

P.S

Я не хочу использовать curl в качестве альтернативы http-потокам, так как движок Google не поддерживает curl.

2

Решение

http_build_query() генерирует строку в кодировке URL Однако для API требуется JSON. Вы должны использовать json_encode() вместо.

Изменить:

$data = http_build_query($data);

Для того, чтобы:

$data = json_encode($data);

Хотя, возможно, это не единственная ваша проблема, это определенно одна проблема, которая может привести к ошибка 400, неверный запрос.

3

Другие решения

Не могли бы вы иметь опечатку в своем коде?

$data=array('fields' => array ('project' => array ('key' => 'WOIS',),'summary' => 'ABC','description' => 'ABC','issuetype' => array ('name' => 'Task',),),);

против

$data = ['fields' => ['projects'=>['key'=>'WOIS'],'summary'=>'adfsdf','descriptio‌​n'=>'adfefsa','issue‌​type'=>['name'=>'Tas‌​k']]];

первая строка говорит project в то время как вторая строка говорит projects

0

По вопросам рекламы [email protected]