将变量传递给CURLOPT_URL时,Curl返回不良结果

时间:2018-08-07 16:08:38

标签: php curl

我对我的curl请求有一个提示,当我向CURLOPT_URL参数传递变量时,我从响应中获取了错误的值,当我对URL curl进行硬编码时,它返回了良好的值:

class APi {
   public $this->url;
   public $this->token; // :)
   function __construct($url, $token){
       $this->url = $url;
       $this->token = $token;
   }

function getUsers(){
    $curl = curl_init();
    curl_setopt_array($curl, array(
    CURLOPT_PORT => "4000",
    CURLOPT_URL => $this->url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => array(
        "Cache-Control: no-cache",
        "Content-Type: application/x-www-form-urlencoded",
        "Postman-Token: 472244a4-af1d-4ca5-b26b-07f6b168c04b",
        "x-access-token:" . $this->token
    ),));

    $response = curl_exec($curl);
    $err = curl_error($curl);

    curl_close($curl);

    if ($err) {
        echo "cURL Error #:" . $err;
    } else {
        print_r($response); //<== print bad values when CURLOPT_URL value is a variable
        return $response;
    }
  }
} // end of class api

// Init the class
$data = new Api($url, $token);
print_r($data->getUsers());

$ this-> url是从构造函数初始化的,当我将$ this-> url的值粘贴到邮递员时,我得到了很好的结果,但是从代码中得到了不好的结果。

有人可以帮助我吗?

谢谢。

======解决方案=========

根据某些人的建议,我必须对单个参数值进行urlencode,并且它的工作原理与众不同。感谢var_dump提示来比较字符长度。

0 个答案:

没有答案