我的PHP CURL请求有什么问题?

我的PHP CURL请求有什么问题?,php,curl,Php,Curl,我的团队使用basecamp进行项目管理,我是管理员。我试图弄清楚如何使用basecamp REST api,这样我就可以创建一些可以在内部网页上使用的自定义插件,这样团队成员就可以直接向basecamp写评论 我不熟悉CURL和PHP,所以我从一开始就非常简单。只是第一次尝试就想把项目列表拿回来。我用这个撞到了砖墙 以下是API文档: 如果我在web浏览器中转到https://[mycompanyname].basecamphq.com/projects.xml,弹出窗口会请求我的用户名和密码

我的团队使用basecamp进行项目管理,我是管理员。我试图弄清楚如何使用basecamp REST api,这样我就可以创建一些可以在内部网页上使用的自定义插件,这样团队成员就可以直接向basecamp写评论

我不熟悉CURL和PHP,所以我从一开始就非常简单。只是第一次尝试就想把项目列表拿回来。我用这个撞到了砖墙

以下是API文档:

如果我在web浏览器中转到https://[mycompanyname].basecamphq.com/projects.xml,弹出窗口会请求我的用户名和密码。我没有使用u/pw,而是按照指示输入api令牌和密码“X”。它工作得很好,我的所有项目都返回了一个XML。伟大的所以我知道api令牌是好的

现在尝试使用PHP和CURL实现这一点。这是我的密码

$process = curl_init();
$username = '[my api token]';
$password = 'X';

curl_setopt($process, CURLOPT_URL, 'https://[mycompanyname].basecamphq.com/projects.xml'); 
curl_setopt($process, CURLOPT_HEADER, 1);                                                                           
curl_setopt($process, CURLOPT_HTTPHEADER, array('Content-Type: application/xml', 'Content-Type: application/xml', 'Authorization: Basic [my api token]=='));        
curl_setopt($process, CURLOPT_USERPWD, $username . ":" . $password);                                                
curl_setopt($process, CURLOPT_TIMEOUT, 30);                                                                         
curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);                                                                
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, false);

$response = curl_exec($process);  
curl_close($process);

echo '<pre>';
print_r($response);
我不明白为什么。当我检查标题/响应并比较两者时,它们看起来一点也不相似

来自PHP尝试的标题和响应

Request URL:https://[my company name].basecamphq.com/projects.xml
Request Method:GET
Status Code:304 Not Modified
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8,es;q=0.6
Authorization:Basic [**api code that is different from the one i use**]
Cache-Control:max-age=0
Connection:keep-alive
Cookie:[removed]
Host:[my company name].basecamphq.com
If-None-Match:"72b1da3a588429c04fe316d1ab0b047d"
User-Agent:Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.46 Safari/535.11


Response Headers
Cache-Control:max-age=0, private, must-revalidate
Connection:keep-alive
Date:Thu, 01 Mar 2012 10:44:24 GMT
ETag:"72b1da3a588429c04fe316d1ab0b047d"
Server:nginx/1.0.8
Set-Cookie:[removed]
Status:304 Not Modified
Strict-Transport-Security:max-age=31536000
X-Runtime:0.020332
X-Throttle-Count:1
X-Throttle-Horizon:2012-03-01T10:44:30Z
X-Throttle-Max:500
X-UA-Compatible:IE=Edge,chrome=1
当我直接进入chrome中的URL时,标题和响应


啊!今天玩了两个小时后,我从HTTPHEADER中删除了“AUthorization:Basic”选项,使其正常工作,尽管api文档明确指出:“使用HTTP身份验证管理身份验证(现在只支持“Basic”)。每个请求都必须包含授权HTTP头。”令人惊讶的是,他们一个小小的恼人的疏忽就可以浪费我2个小时的时间。请注意,您的第一个请求/响应,即发送到的请求/响应,是由您的web服务器生成的-您得到了200 OK,因为您的脚本执行得很好。401由basecamp归还。啊!今天玩了两个小时后,我从HTTPHEADER中删除了“AUthorization:Basic”选项,使其正常工作,尽管api文档明确指出:“使用HTTP身份验证管理身份验证(现在只支持“Basic”)。每个请求都必须包含授权HTTP头。”令人惊讶的是,他们一个小小的恼人的疏忽就可以浪费我2个小时的时间。请注意,您的第一个请求/响应,即发送到的请求/响应,是由您的web服务器生成的-您得到了200 OK,因为您的脚本执行得很好。401计划将由大本营归还。
Request URL:http://localhost/sandbox/basecamp.php
Request Method:GET
Status Code:200 OK
Request Headersview parsed
GET /sandbox/basecamp.php HTTP/1.1
Host: localhost
Connection: keep-alive
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.46 Safari/535.11
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,es;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: MoodleSessionTest=M0QYDbdGlc; MoodleSession=4r2c9g6eset4tg1hhk6h3b8tr2; MOODLEID_=%25EE%25C3%2511H%25BFx%25B1%250A%25EDN%25EF

Response Header
HTTP/1.1 200 OK
Date: Thu, 01 Mar 2012 11:20:11 GMT
Server: Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.4 mod_perl/2.0.4 Perl/v5.10.1
X-Powered-By: PHP/5.3.5
Content-Length: 497
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
Request URL:https://[my company name].basecamphq.com/projects.xml
Request Method:GET
Status Code:304 Not Modified
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8,es;q=0.6
Authorization:Basic [**api code that is different from the one i use**]
Cache-Control:max-age=0
Connection:keep-alive
Cookie:[removed]
Host:[my company name].basecamphq.com
If-None-Match:"72b1da3a588429c04fe316d1ab0b047d"
User-Agent:Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.46 Safari/535.11


Response Headers
Cache-Control:max-age=0, private, must-revalidate
Connection:keep-alive
Date:Thu, 01 Mar 2012 10:44:24 GMT
ETag:"72b1da3a588429c04fe316d1ab0b047d"
Server:nginx/1.0.8
Set-Cookie:[removed]
Status:304 Not Modified
Strict-Transport-Security:max-age=31536000
X-Runtime:0.020332
X-Throttle-Count:1
X-Throttle-Horizon:2012-03-01T10:44:30Z
X-Throttle-Max:500
X-UA-Compatible:IE=Edge,chrome=1