示例#1
0
 /**
  * @param Request $request
  * @return resource
  */
 protected function buildCurlResource(Request $request)
 {
     $ch = curl_init((string) $request->getUrl());
     $options = $this->curlOptions;
     $options[CURLOPT_CUSTOMREQUEST] = $request->getMethod();
     // configuring a POST request
     if ($request->getPost()) {
         $options[CURLOPT_POSTFIELDS] = $request->getPost();
     }
     if ($request->isHead()) {
         $options[CURLOPT_NOBODY] = TRUE;
     } elseif ($request->isGet()) {
         $options[CURLOPT_HTTPGET] = TRUE;
     }
     // disable the 'Expect: 100-continue' behaviour. This causes CURL to wait
     // for 2 seconds if the server does not support this header.
     $options[CURLOPT_HTTPHEADER]['Expect'] = '';
     $tmp = array();
     foreach ($request->getHeaders() + $options[CURLOPT_HTTPHEADER] as $name => $value) {
         $tmp[] = trim("{$name}: {$value}");
     }
     $options[CURLOPT_HTTPHEADER] = $tmp;
     // execute request
     curl_setopt_array($ch, $options);
     $this->onRequest($request, $options);
     return $ch;
 }