Я пытаюсь отлаживать запрос на завивки к конечной точке web-сервиса "getToken".
Я не уверен на 100%, что URL-адрес и информация об авторизации автоматически записываются в ручку curl.
Я пытаюсь использовать curl_getinfo($ch, CURLINFO_HEADER_OUT);
для захвата отправленного запроса, но он не дает мне много информации. Есть ли способ получить более глубокую диагностику о том, как выглядит фактический запрос на завивки?
Здесь код:
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HEADER, 1); // just getting header to see if we got an auth token
curl_setopt($ch, CURLOPT_FILE, $fh);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLINFO_HEADER_OUT, 1); // capture the header info
curl_setopt($ch, CURLOPT_VERBOSE, 1); // turn verbose on
// execute the curl request
$rh = fopen("request.txt", "w"); // open request file handle
$verbose = fopen('php://temp', 'rw+');
curl_setopt($ch, CURLOPT_STDERR, $verbose);
curl_exec($ch); // execute request
$sent_request = curl_getinfo($ch, CURLINFO_HEADER_OUT);
fwrite($rh, $sent_request); // save the request info
fclose($rh);
!rewind($verbose);
$verboseLog = stream_get_contents($verbose);
echo "Verbose information:\n<pre>", htmlspecialchars($verboseLog), "</pre>\n";
Это все работает, насколько это возможно, но каждый раз возвращает 401 - администратор API уверяет меня, что имя пользователя/пароль у меня правильно.
Мне было интересно, если я каким-то образом неправильно понял URL-адрес или не отправил правильное имя пользователя/пароль, но эта информация не была напечатана в сохраненных данных запроса:
HEAD /export/auth HTTP/1.1
Authorization: Basic Y2FpcmRzdW5mYTpENWlAaVM4cw==
Host: webservices.mycompany.com
Accept: */*
Вы можете видеть, что имя пользователя/пропуск не записано (я предполагаю для обеспечения безопасности). Конечный URL-адрес, который, как мне кажется, является значением host
плюс начало значения HEAD
, поэтому webservices.mycompany.com/export/auth
?
Оператор "Подробные сведения" ничего не печатает. Не уверен, почему на этом тоже!
Спасибо за помощь.
EDIT: добавлен подробный режим из Php - отладочный завиток благодаря комментарию immulatin