0

私が行うすべてのTwitterリクエストで、返されるHTTPヘッダーにはX-RateLimit-Limitが含まれている必要があります

ただし、PHPを使用してこれらを取得することはできないようです。誰かが私が犯した骨の折れる間違いを教えてもらえますか?

通常の方法でカールを設定し、リクエストを正常にGETおよびPOSTできます。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLINFO_HEADER_OUT, TRUE);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);

$response = curl_exec($ch);
$response_info=curl_getinfo($ch);
$erno = curl_errno($ch);
$er = curl_error($ch);
curl_close($ch);

http_codeなどの応答情報を取得できます

$response_info['http_code']

しかし、この行はnullを返します

//Doesn't bloody work. No idea why!
$rate_limit = $response_info['X-RateLimit-Limit'];

PHPバージョン5.3.10を実行しています。

編集

これはprint_r($ response_info);の結果です。

Array
(
[url] => https://api.twitter.com/1/statuses/home_timeline.json...
[content_type] => application/json;charset=utf-8
[http_code] => 200
[header_size] => 695
[request_size] => 410
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 1.239977
[namelookup_time] => 0.007361
[connect_time] => 0.155783
[pretransfer_time] => 0.465397
[size_upload] => 0
[size_download] => 99425
[speed_download] => 80182
[speed_upload] => 0
[download_content_length] => 99425
[upload_content_length] => 0
[starttransfer_time] => 0.794829
[redirect_time] => 0
[certinfo] => Array()
[redirect_url] => 
[request_header] => GET /1/statuses/home_timeline.json... HTTP/1.1
Host: api.twitter.com
Accept: */*
)
4

1 に答える 1

3

curl_getinfo応答ヘッダーは返さず、要求に関するその他のメタ情報のみを返します。ヘッダーを取得するには、 に設定CURLOPT_HEADERtrueます。これにより、出力にヘッダーが含まれます。それらを応答本文から分離するには、次のようにします。

list($headers, $body) = explode("\n\n", $response, 2);

ヘッダーを解析するには、再度展開します。

$headers = explode("\n", $headers);
foreach ($headers as $header) {
    list($key, $value) = explode(':', $header, 2);
    $headers[trim($key)] = trim($value);
}

echo $headers['X-RateLimit-Limit'];
于 2012-05-25T08:02:11.087 に答える