当我应该使用php curl获取状态304时获取HTTP状态200

时间:2016-02-25 19:41:18

标签: php http curl

我正在构建一个应用程序,它经常调用外部api并缓存发回的数据。 api还发送" requestnext" url,上次修改日期和ETag,可用于对更新进行条件get调用。在进行请求文本调用时,我应该在没有新数据时收到状态304,但我只获得状态200(即使没有新数据)。

我的代码:

$curl = curl_init();

                curl_setopt_array($curl, array(
                    CURLOPT_RETURNTRANSFER => 1,
                    CURLOPT_URL => $nextrequest . '&apiKey='.$apikey,
                    CURLOPT_SSL_VERIFYPEER => false,
                    CURLOPT_HTTPHEADER => array($lastmod, $etag),
                    CURLOPT_HEADER => 1,
                ));

                $response = curl_exec($curl);

                $curlinfo = curl_getinfo($curl);

                // Get http response code
                $httpresponse = $curlinfo['http_code'];

$ lastmod和$ etag变量包含

$lastmod = If-Modified-Since: Wed, 24 Feb 2016 22:38:22 GMT
$etag = If-None-Match: "ffffffffec3c286a-json"

对于我可能做错的任何想法?

1 个答案:

答案 0 :(得分:0)

原来我将条件获取请求发送到错误的网址。我应该把它发送到我曾经提出请求的原始网址(我将其发送到“nextrequest”网址)。

这是针对AP选举api的,如果有人想知道的话!