我想对yesmail api做一个简单的GET请求,我有我可以直接在浏览器中粘贴的url,它显示正确的信息,并且如果我将下面的代码添加为在Firefox的RESTClient实现了简短的文件中显示,我得到正确的响应:使用PHP进行GET请求
GET https://services.yesmail.com/enterprise/[email protected] 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/[email protected]";
$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实现的信息进入的卷曲头?这是我第一次使用API的,所以任何帮助表示赞赏。
更新 当使用功能file_get_contents
我得到正确的响应(这对于GET方法仅仅是一个与我的唯一用户号码网址):
$context = stream_context_create(array(
'http' => array(
'header' => "Authorization: Basic " . base64_encode("*******:********")
)
));
$data = file_get_contents('https://services.yesmail.com/enterprise/[email protected]', false, $context);
echo $data;
但是我真的想卷曲方法工作,因为我希望能够添加订阅者。
好,谢谢你的帮助,我用你给的代码,现在我得到了一些东西**信息:HTTP响应代码是:0错误:curl_exec()失败**所以HTTP响应0,看着这个和发现在获得响应之前呼叫被取消时,有时会发生这种情况?我尝试使用'file_get_contents'函数来查看是否可以得到任何响应,并且它工作正常(我用我使用的代码更新了我的问题) –
当使用选项CURLOPT_VERBOSE => 1执行此操作时,您应该有得到了一些诊断消息(写入STDERR)。这些信息(理论上)应该给出一些关于问题是什么的指示。您可以在编辑中将这些诊断消息提供给您的文章吗?如果从网页(而不是命令行)执行此操作,则可能需要经过一些额外的工作才能获取消息;看到[这个答案](http://stackoverflow.com/a/14436877)了解如何做到这一点。 –
我现在工作! :) 非常感谢你的帮助。 –