This works great to get the header
$imageurl = "http://p.twimg.com/AW2-vIUCAAE_1FN.png";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_URL, $image_url);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt ($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
$content = curl_exec ($ch);
curl_close ($ch);
print_r($content);
returning
HTTP/1.1 200 OK
Server: nginx
X-peep-host: den2twapi014
Last-Modified: Mon, 15 Aug 2011 03:41:50 GMT
ETag: "7283847-dbb8-4aa830b1dabf0"
Accept-Ranges: bytes
Content-Length: 56248
Cache-Control: public, max-age=21600
Expires: Wed, 28 Mar 2012 15:53:57 GMT
Content-Type: image/png
X-CDN: AKAM
Date: Wed, 28 Mar 2012 09:53:57 GMT
Connection: keep-alive
what is the best way to echo out the Content-Type:
?
Content-Type - Everything curl. Content-Type. POSTing with curl's -d option will make it include a default header that looks like Content-Type: application/x-www-form-urlencoded . That is what your typical browser will use for a plain POST. Many receivers of POST data do not care about or check the Content-Type header.
We can use curl -v or curl -verbose to display the request headers and response headers in the cURL command. The > lines are request headers . The < lines are response headers .
In Python, cURL transfers requests and data to and from servers using PycURL. PycURL functions as an interface for the libcURL library within Python. Almost every programming language can use REST APIs to access an endpoint hosted on a web server.
Before you call curl_close()
, call curl_getinfo()
:
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
echo $contentType;
Alternatively, if you want a parsed array of the head, here is a quick and dirty solution (WARNING: this does nothing to validate that the supplied string actually is an HTTP response, use with caution):
<?php
function parse_http_head ($str) {
$result = array();
// Split into lines
$lines = explode("\r\n", $str);
// Handle response line
$line = explode(' ', array_shift($lines), 3);
$version = explode('/', $line[0]);
$result['version'] = (float) $version[1];
$result['code'] = (int) $line[1];
$result['text'] = $line[2];
// Parse headers
$result['headers'] = array();
while ($line = trim(array_shift($lines))) {
list($name, $val) = explode(':', $line, 2);
$name = strtolower(trim($name)); // Header names are case-insensitive, so convert them all to lower case so we can easily use isset()
if (isset($result['headers'][$name])) { // Some headers (like Set-Cookie:) may appear more than once, so convert them to an array if necessary
$result['headers'][$name] = (array) $result['headers'][$name];
$result['headers'][$name][] = trim($val);
} else {
$result['headers'][$name] = trim($val);
}
}
return $result;
}
// $content comes from your code above
$parsed = parse_http_head($content);
print_r($parsed);
/*
Output:
Array
(
[version] => 1.1
[code] => 200
[text] => OK
[headers] => Array
(
[server] => nginx
[x-peep-host] => den2twapi014
[last-modified] => Mon, 15 Aug 2011 03:41:50 GMT
[etag] => "7283847-dbb8-4aa830b1dabf0"
[accept-ranges] => bytes
[content-length] => 56248
[cache-control] => public, max-age=21600
[expires] => Wed, 28 Mar 2012 15:53:57 GMT
[content-type] => image/png
[x-cdn] => AKAM
[date] => Wed, 28 Mar 2012 09:53:57 GMT
[connection] => keep-alive
)
)
*/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With