【发布时间】:2014-01-28 20:50:09
【问题描述】:
我正在尝试向 yesmail api 发出一个简单的 GET 请求,我有可以直接粘贴到浏览器中的 url,它会显示正确的信息,并且如果我添加以下代码,如简要文档中所示在 Firefox RESTClient 我得到正确的响应:
GET https://services.yesmail.com/enterprise/subscribers?email=karina@email.co.uk HTTP/1.1
Accept-Encoding: gzip,deflate
User-Agent: Jakarta Commons-HttpClient/3.1
Authorization: Basic xxxxxxxxxxxxx
Host: services.yesmail.com
但是,当尝试使用 CURL 进行连接时,我什么也得不到,根本没有 HTTP 响应,只是一个空白页面。我不确定我做错了什么?这就是我所拥有的:
$url = "https://services.yesmail.com/enterprise/subscribers?email=karina@email.co.uk";
$header[] = "Accept-Encoding: gzip, deflate";
$header[] = "User Agent: Jakarta Commons-HttpClient/3.1";
$header[] = "Authorization: Basic xxxxxxxxxxxxx";
$header[] = "Host: services.yesmail.com";
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $header );
curl_setopt($ch, CURLOPT_USERPWD, 'xxxxx:xxxxxxxxxx');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
$response = (curl_exec($ch));
print_r($response);
curl_close($ch);
我是否认为我输入到 RESTClient 的信息会进入 CURL 的标头中?这是我第一次使用 API,因此感谢您的帮助。
更新
当使用 file_get_contents 函数时,我得到了正确的响应(对于 GET 方法,它只是一个带有我唯一订户号的 URL):
$context = stream_context_create(array(
'http' => array(
'header' => "Authorization: Basic " . base64_encode("*******:********")
)
));
$data = file_get_contents('https://services.yesmail.com/enterprise/subscribers?email=karina@email.co.uk', false, $context);
echo $data;
但是我真的想让 CURL 方法正常工作,因为我希望能够添加订阅者。
【问题讨论】: