PHP获取http标题响应代码没有cURL

问题描述:

我写了一个类来检测cURL是否可用,如果它使用cURL执行GET,POST,DELETE。在cURL版本中,我使用curl_getinfo($curl, CURLINFO_HTTP_CODE);来获取HTTP代码。如果cURL不可用,它使用fopen()读取文件内容。如何在没有cURL的情况下获取HTTP头代码?PHP获取http标题响应代码没有cURL

+0

使用'fsockopen()'。 – 2012-03-15 17:24:18

+0

如果您直接读取HTTP响应流,则必须解析出标题和响应代码。没什么大不了的,你应该能够通过快速搜索找到示例代码。 – 2012-03-15 17:26:56

+0

我已经在[此答案](http://*.com/a/7566440/367456)中发布了一些示例代码。有关如何使用PHP执行HTTP而不使用curl函数的更一般的描述,请参见[在此答案中](http://*.com/a/9705711/367456)。 – hakre 2012-03-15 17:36:52

每当您进行一些HTTP交互时,同一范围内的特殊变量$http_response_header将包含上次HTTP交互所产生的所有标头(包括状态行标头)。

请参阅here for an example how to parse it and obtain the status code

使用get_headers

<?php 
$url = "http://www.example.com/"; 

$headers = get_headers($url); 

$code = $headers[0]; 
?> 

编辑:get_headers需要额外的呼叫,并且不适合此方案。使用$http_response_headers作为suggested by hakre

+1

这将自行运行一个请求。 – hakre 2012-03-15 17:40:25

+0

啊,你会是对的。在这种情况下,我的答案可能不是最好的选择。 – 2012-03-15 18:41:54

+2

从技术上讲,这并没有错,因为TS没有发布太多的代码,所以实际上并不清楚她/他想知道什么;) – hakre 2012-03-15 19:25:08