public function HttpClientCurlDelegate::curl in Http Client 7.2
Same name and namespace in other branches
- 6.2 includes/HttpClientCurlDelegate.inc \HttpClientCurlDelegate::curl()
Gets a curl handle for the given request.
1 call to HttpClientCurlDelegate::curl()
- HttpClientCurlDelegate::execute in includes/
HttpClientCurlDelegate.inc - Executes a request for the HttpClient.
File
- includes/
HttpClientCurlDelegate.inc, line 41
Class
- HttpClientCurlDelegate
- A delegate for the HttpClient that uses curl to fetch data.
Code
public function curl(HttpClientRequest $request, $curlopts) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, 'Drupal (+http://drupal.org/)');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $request->method);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $request
->url());
// Only add Content-Length if we actually have any content or if it is a POST
// or PUT request. Some non-standard servers get confused by Content-Length in
// at least HEAD/GET requests, and Squid always requires Content-Length in
// POST/PUT requests.
$content_length = strlen($request->data);
if ($content_length > 0 || $request->method == 'POST' || $request->method == 'PUT') {
curl_setopt($ch, CURLOPT_POSTFIELDS, $request->data);
}
curl_setopt($ch, CURLOPT_HTTPHEADER, $request
->getHeaders());
curl_setopt_array($ch, $curlopts);
return $ch;
}