cURL不在PHP中工作?

时间:2016-02-15 04:00:26

标签: php curl jira jira-rest-api

我有以下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复制并粘贴到浏览器中时,它可以正常工作。 我使用的示例过滤器:

  

“目标”=“Blah”

当我考虑它时,我实际上并不需要它来工作,我只需要它知道输入何时不是JQL(它确实如此)。但我现在真的很好奇。任何人都有关于它可能是什么的想法?

1 个答案:

答案 0 :(得分:1)

您应对$filter进行网址编码。

它使用空字符串或随机字符串的原因是因为它们没有任何需要进行URL编码的具有挑战性的字符。

URL在浏览器中工作但在脚本中不起作用的原因是浏览器执行URL编码。

请执行以下操作:

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

链接到urlencode:http://php.net/manual/en/function.urlencode.php