我想在php中发出一个请求,就像下面的请求一样,可以使用curl命令运行(在linux apt-get install curl上):
curl -H "X-SOCIALEDGE-ID: 6424a4b2a1b054d78ca1c9c69ca16016" \
https://api-rc.<the_api_domain>:443/api/publishers?filter=email=<some_email>
哪些函数给我一个JSON响应。
但:
class SocialEdgeApi {
protected $api_key = "6424a4b2a1b054d78ca1c9c69ca16016";
protected $api_url = "https://api-rc.<the_api_domain>:443/api/";
private function getBasicCurl($endpoint) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->api_url.$endpoint);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-SOCIALEDGE-ID' => $this->api_key
]);
return $ch;
}
private function doGetRequest($endpoint) {
$ch = $this->getBasicCurl($endpoint);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
var_dump($head);
var_dump($httpCode);
die();
return $req;
}
public function checkInfluencerExists($email) {
$http = $this->doGetRequest('publishers?filter=email='.$email);
die('...'.$resp = $http->getResponseBody());
}
}
然后在另一个文件或php -a:
中运行require_once('SocialEdgeApi.php');
$a = new SocialEdgeApi();
$a->checkInfluencerExists('<some_email>');
返回403 Forbidden。这可能意味着标题设置不正确。
这些2&#34;如何卷曲&#34;请求有不同的行为/我在PHP版本中缺少/做错了什么?
我很抱歉不包含允许您使用此特定API进行测试的详细信息,但它是私有的第三方API。
答案 0 :(得分:1)
看起来像CURL标题通常设置如下:
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-SOCIALEDGE-ID: ' . $this->api_key,
]);
答案 1 :(得分:1)
正如EVILoptimist所指出的,卷曲的一个很好的替代方案是PHP的流上下文。我在这里描述的是为了方便那些偶然发现这一点的人。
你可以简单地执行这样的获取请求:
echo file_get_contents('http://www.google.com');
对于帖子请求,请参阅此处的示例:http://php.net/manual/en/context.http.php#context.http.example-post