我对我的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提示来比较字符长度。