cURL не работает в PHP?

У меня есть следующая функция PHP:

            function checkJQL($filter) {
$auth = "account:password";
$URL='http://jira/rest/api/latest/search?jql='.$filter;
echo $URL;

//  Initiate curl
$ch = curl_init();
// Disable SSL verification
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//Tell it to always go to the link
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
// Will return the response, if false it print the response
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Set the url
curl_setopt($ch, CURLOPT_URL,$URL);
//Set username and password
curl_setopt($ch, CURLOPT_USERPWD, $auth);
// Execute
$result=curl_exec($ch);
// Closing
curl_close($ch);

echo $result;
// Will dump a beauty json :3
var_dump(json_decode($result, true));
echo "DONE";
}

Когда я звоню это с $filter = "" Работает нормально, выводит все. Как только я вставляю правильный запрос JQL, он терпит неудачу. Когда я ввожу случайный мусор, он работает (как, например, я получаю неверное входное сообщение), но когда это правильный JQL, он никогда не работает.

Когда я копирую и вставляю URL, который я отображаю в браузере, он работает.
Пример фильтра, который я использовал:

«Target» = «Бла»

Когда я думаю об этом, мне на самом деле не нужно, чтобы это работало, мне просто нужно знать, когда ввод не JQL (что он делает). Но мне сейчас очень любопытно. У кого-нибудь есть идеи о том, что это может быть?

0

Решение

Вы должны URL-кодировать $filter,

Причина, по которой он работает с пустыми или случайными строками, заключается в том, что в них нет сложных символов, которые необходимо кодировать в URL.

Причина, по которой URL работает в браузере, но не в скрипте, заключается в том, что браузер выполняет кодировку URL.

Так что сделайте следующее:

$URL='http://jira/rest/api/latest/search?jql='.urlencode($filter);

Ссылка на urlencode: http://php.net/manual/en/function.urlencode.php

1

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

Других решений пока нет …

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