PHP 对 Stackoverflow 的卷曲请求 API
PHP Curl request to Stackoverflow API
我正在尝试使用 PHP 中的 $curl
访问 Whosebug api 以获取基本信息。我已经查看了文档,并且尝试了大约一百种 header 和 curl_setopt
命令的组合,但没有任何东西会 return 正确。有没有人在 PHP 中使用 curl 访问 Whosebug API?你使用什么参数来完成这个?
这是我现在的工作,请注意,您可以看到我尝试过的 curl 请求组合的注释掉的工作:
$stack_url = 'https://api.stackexchange.com/2.2/info?site=Whosebug&key=';
$header[] = "Accept:application/json";
// $header[] = "Accept-Encoding:gzip, deflate";
// $header[] = "Cache-Control:cache";
// $header[] = "Cache-Control:no-cache";
// $header[] = "Accept-Language:en-US,en;q=0.5";
$header[] = "Content-Length: 1000";
$header[] = "Content-Type:application/json";
// $header[] = "Cookie:23";
// $header[] = "X-Requested-With:XMLHttpRequest";
// here we curl request to amazon no matter what
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $stack_url);
// the needed settings for this curl request
// curl_setopt( $curl, CURLOPT_HEADER, 1 );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $curl, CURLOPT_HTTPHEADER, $header);
// curl_setopt( $curl, CURLOPT_POSTFIELDS, array());
// curl_setopt( $curl, CURLOPT_BINARYTRANSFER, 1 );
// curl_setopt( $curl, CURLOPT_POST, 1 );
$string = curl_exec( $curl );
curl_close( $curl );
debug( $string );
exit;
目前这项工作正在 returning FALSE
,但由于各种原因我也 returned 了一个 400 错误请求。我想我已经克服了这个问题,但我不确定该怎么做才能恢复数据响应。
看起来你已经完成了大部分,尽管我认为你所拥有的任何 headers 都不是必需的。缺少的主要内容是设置编码,因为所有响应都被压缩了(请参阅 doco 的 General section)。
这是一个快速运行的示例:
<?php
$stack_url = 'https://api.stackexchange.com/2.2/info?site=Whosebug';
$string = curl_init($stack_url);
curl_setopt($string, CURLOPT_ENCODING, 'gzip'); // Required by API
curl_setopt($string, CURLOPT_RETURNTRANSFER, 1 );
$result = curl_exec($string );
curl_close($string );
var_dump($result );
如果您使用 API 做更多的工作,您可能需要查看一个库来管理大部分工作,例如 Stack.PHP
我正在尝试使用 PHP 中的 $curl
访问 Whosebug api 以获取基本信息。我已经查看了文档,并且尝试了大约一百种 header 和 curl_setopt
命令的组合,但没有任何东西会 return 正确。有没有人在 PHP 中使用 curl 访问 Whosebug API?你使用什么参数来完成这个?
这是我现在的工作,请注意,您可以看到我尝试过的 curl 请求组合的注释掉的工作:
$stack_url = 'https://api.stackexchange.com/2.2/info?site=Whosebug&key=';
$header[] = "Accept:application/json";
// $header[] = "Accept-Encoding:gzip, deflate";
// $header[] = "Cache-Control:cache";
// $header[] = "Cache-Control:no-cache";
// $header[] = "Accept-Language:en-US,en;q=0.5";
$header[] = "Content-Length: 1000";
$header[] = "Content-Type:application/json";
// $header[] = "Cookie:23";
// $header[] = "X-Requested-With:XMLHttpRequest";
// here we curl request to amazon no matter what
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $stack_url);
// the needed settings for this curl request
// curl_setopt( $curl, CURLOPT_HEADER, 1 );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $curl, CURLOPT_HTTPHEADER, $header);
// curl_setopt( $curl, CURLOPT_POSTFIELDS, array());
// curl_setopt( $curl, CURLOPT_BINARYTRANSFER, 1 );
// curl_setopt( $curl, CURLOPT_POST, 1 );
$string = curl_exec( $curl );
curl_close( $curl );
debug( $string );
exit;
目前这项工作正在 returning FALSE
,但由于各种原因我也 returned 了一个 400 错误请求。我想我已经克服了这个问题,但我不确定该怎么做才能恢复数据响应。
看起来你已经完成了大部分,尽管我认为你所拥有的任何 headers 都不是必需的。缺少的主要内容是设置编码,因为所有响应都被压缩了(请参阅 doco 的 General section)。
这是一个快速运行的示例:
<?php
$stack_url = 'https://api.stackexchange.com/2.2/info?site=Whosebug';
$string = curl_init($stack_url);
curl_setopt($string, CURLOPT_ENCODING, 'gzip'); // Required by API
curl_setopt($string, CURLOPT_RETURNTRANSFER, 1 );
$result = curl_exec($string );
curl_close($string );
var_dump($result );
如果您使用 API 做更多的工作,您可能需要查看一个库来管理大部分工作,例如 Stack.PHP