2016-02-15 3 views
0

У меня есть следующие PHP функции:cURL не работает в 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 (что он делает). Но сейчас мне действительно интересно. У кого-нибудь есть идеи о том, что это может быть?

ответ

1

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

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

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

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

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

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

Смежные вопросы