我正在针对Space-Track API编写代码,并且curl请求无法进行身份验证。我的代码如下:
$curl = curl_init();
$url = "https://www.space-track.org/basicspacedata/query/class/tle/EPOCH/%3C1969-12-18/NORAD_CAT_ID/4/orderby/EPOCH%20desc/limit/1/format/3le/metadata/true";
$c = curl_init('https://www.space-track.org/auth/login?identity=XXX&password="XXX"');
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_COOKIEJAR, 'cookies.txt');
$page = curl_exec($c);
curl_close($c);
$c = curl_init($url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_COOKIEFILE, 'cookies.txt');
$page = curl_exec($c);
curl_close($c);
echo $page;
收到的回复是:"您必须登录才能完成此操作"
然而,身份验证显然是成功的,因为cookies.txt文件中填充了身份验证消息。
我已经阅读了许多关于卷曲身份验证的教程,我也尝试了其他用户' php(eg)中的space-track API的实现,但还没有设法使这些工作符合我的要求:
https://www.space-track.org/basicspacedata/query/class/tle/EPOCH/%3C1969-12-18/NORAD_CAT_ID/4/orderby/EPOCH%20desc/limit/1/format/3le/metadata/true
请求在浏览器(直接访问)中通过身份验证和终端进行,但在脚本中运行时则不行。直接浏览器访问会返回正确的响应:
0 EXPLORER 1
1 00004U 58001 A 69351.29911760 .00162519 +00000-0 +00000-0 0 9991
2 00004 033.1571 316.5155 0244636 013.0841 347.6023 15.32472396567852
通过PHP正确地验证和接收此响应的任何帮助都非常感谢。