Заголовки Php Curl не установлены - PullRequest
0 голосов
/ 19 октября 2019

Я пытаюсь установить 2 переменные для заголовков curl и не могу понять, что не так. Я не получаю никаких ошибок в журналах php, но когда я распечатываю информацию curl, я вижу, что заголовки не установлены. Любая точка в правильном направлении будет полезна. Спасибо

Пример, который я использую PHP cURL пользовательские заголовки

class GetAuctions
{
private $APIKeyID = "theIDhere";
private $APIKeyPass = "thePasswordHere";
private $BaseURL = "https://someurlHere";

public function __construct()
{
    //get list of upcoming auctions 
    $get_data = $this->callAPI('GET', $this->BaseURL, false);
    //turn the response into a json
    $response = json_decode($get_data, true);
    //display the response for testing
    echo print_r($response);
    $errors = $response['response']['errors'];
    $data = $response['response']['data'][0];
    echo print_r($data);
}

function callAPI($method, $url, $data){
    $curl = curl_init();

    switch ($method){
        case "POST":
            curl_setopt($curl, CURLOPT_POST, 1);
            if ($data)
                curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            break;
        case "PUT":
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
            if ($data)
                curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            break;
        default:
            if ($data)
                $url = sprintf("%s?%s", $url, http_build_query($data));
    }

    // OPTIONS:
    curl_setopt($curl, CURLOPT_URL, $url);
    $headers =array();
    $headers['apiKeyID'] = $this->APIKeyID;
    $headers['apiKeyPass'] = $this->APIKeyPass;
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    echo "<br/>";
    echo print_r(curl_getinfo($curl));
    echo "<br/>";
    // EXECUTE:
    $result = curl_exec($curl);
    if(!$result){die("Connection Failure");}
    curl_close($curl);
    return $result;
}
}

Я также пробовал это:

curl_setopt($curl, CURLOPT_HTTPHEADER, array(
        "apiKeyID: $this->APIKeyID",
        "apiKeyPass: $this->APIKeyPass"
    ));

Мой ответвыглядит так:

Array ( [url] => https://MyURLHere [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0 [namelookup_time] => 0 [connect_time] => 0 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 [redirect_url] => [primary_ip] => [certinfo] => Array ( ) [primary_port] => 0 [local_ip] => [local_port] => 0 ) 1

Ошибка подключения

1 Ответ

0 голосов
/ 19 октября 2019

Похоже, что ваши заголовки неправильно отформатированы:

"apiKeyID : $this->APIKeyID",

Вы должны удалить пробел перед двоеточием:

"apiKeyID: ${this->APIKeyID}",

Кстати: для целей отладки вы также можете использовать CURLOPT_VERBOSE , чтобы увидеть, что отправляется cURL. Если вы не можете посмотреть stderr во время выполнения, перенаправьте его в файл:

curl_setopt($c, CURLOPT_STDERR, fopen('curl-log.txt', 'w+'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...