#php #curl
#php #curl
Вопрос:
Я пытаюсь скопировать
curl -c cookie_jar -H "Content-Type: application/json" -d '{"username" : "admin", "password" : "admin"}' http://jira:8080/rest/auth/latest/session
в PHP, но, похоже, я не могу заставить его работать.
У меня есть
curl_setopt($curl,CURLOPT_URL, $loginUrl );
curl_setopt($curl,CURLOPT_POST, true );
curl_setopt($curl,CURLOPT_POSTFIELDS, '{"username" : "admin", "password" : "admin"}');
curl_setopt($curl,CURLOPT_COOKIEJAR, '/tmp/cookiejar' );
curl_setopt($curl, CURLOPT_HTTPHEADERS,array('Content-Type: application/json'));
curl_exec( $curl );
Любая помощь?
Комментарии:
1. Это очень помогло бы (и, возможно, даже решило проблему), если бы вы могли публиковать HTTP-запросы, сгенерированные двумя вызовами (вы можете использовать wireshark для их захвата)
2. Верно, это был бы удаленный сервер Linux без корневых возможностей. Есть ли метод, отображающий, какова конечная результирующая команда curl в php?
3. Если ваша машина доступна с этого удаленного сервера, вы можете, возможно, установить целевой URL на свой собственный IP-адрес компьютера и видеть, как эти запросы поступают, а не видят, как они уходят.
Ответ №1:
На самом деле вам действительно нужна опция CURLOPT_COOKIEFILE . COOKIEJAR определяет, куда записывать новые файлы cookie. COOKIEFILE предназначен для загрузки существующих файлов cookie в CURL. Ваш эквивалент PHP прямо сейчас не отправляет никаких файлов cookie — он только записывает их. Добавьте это, и все должно быть готово:
curl_setopt($curl,CURLOPT_COOKIEFILE, '/tmp/cookiejar' );
^^^^---the big difference.