PHP Curl запрос к API Stackoverflow

Я пытаюсь использовать $curl в PHP для доступа к API-интерфейсу stackoverflow, чтобы получить основную информацию. Я просмотрел документы и попробовал около ста комбинаций заголовков и curl_setopt команды и ничего не вернется правильно. Кто-нибудь использовал curl в PHP для доступа к API stackoverflow? Какие параметры вы использовали для этого?

Это моя работа в ее нынешнем виде, обратите внимание, что вы можете увидеть закомментированную работу для комбинаций запросов curl, которые я пробовал:

$stack_url = 'https://api.stackexchange.com/2.2/info?site=stackoverflow&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;

Прямо сейчас эта работа возвращается FALSE, но я также вернул 400 плохих запросов по разным причинам. Я думаю, что преодолел это, но я не уверен, что делать, чтобы получить ответ на данные.

2

Решение

Похоже, что вы в основном там, хотя я не думаю, что какой-либо из заголовков, которые у вас есть, необходим. Главное, чего не хватает, это настройки кодировки, поскольку все ответы сжимаются (см. Общий раздел доку).

Это быстрый рабочий пример:

<?php

$stack_url = 'https://api.stackexchange.com/2.2/info?site=stackoverflow';

$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

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]