PHP cURL函数产生什么请求?

时间:2011-09-01 15:03:14

标签: php asp.net curl

我目前正在编写一个C#windows服务,它与PHP页面集成在一起。我有一个代码在PHP中生成请求的示例,但是我从未在PHP中开发过,并且不了解cURL函数如何执行请求。

无论如何都要检索正在发送的请求?或者任何人都可以提供一个示例,说明请求的外观以及请求的发送方式,以便我可以在C#中复制请求。

感谢您的帮助。

public function api(/* polymorphic */) {
   $args = func_get_args();

   if (is_array($args[0])) {
     $serviceId = $this->getApiServiceId($args[0]["method"]);
     unset($args[0]["method"]);
     $args[0]["serviceId"] = $serviceId;      
     $args[0]["dealerId"] = $this->dealerId;
     $args[0]["username"] = $this->username;
     $args[0]["password"] = $this->password;
     $args[0]["baseDomain"] = $this->baseDomain;      
     return json_decode($this->makeRequest($args[0]));
   } else {
     throw Exception("API call failed. Improper call.");
  }
}

protected function makeRequest($params, $ch=null) {
   if (!$ch) {
      $ch = curl_init();
   }

   $opts = self::$CURL_OPTS;
   if ($this->useFileUploadSupport()) {
      $opts[CURLOPT_POSTFIELDS] = $params;
   } else {
      $opts[CURLOPT_POSTFIELDS] = http_build_query($params, null, '&');
   }

   // disable the 'Expect: 100-continue' behaviour. This causes CURL to wait
   // for 2 seconds if the server does not support this header.
   if (isset($opts[CURLOPT_HTTPHEADER])) {
      $existing_headers = $opts[CURLOPT_HTTPHEADER];
      $existing_headers[] = 'Expect:';
     $opts[CURLOPT_HTTPHEADER] = $existing_headers;
   } else {
      $opts[CURLOPT_HTTPHEADER] = array('Expect:');
   }

   curl_setopt_array($ch, $opts);
   $result = curl_exec($ch);
   if ($result === false) {
      $e = new WPSApiException(array(
         'error_code' => curl_errno($ch),
         'error'      => array(
            'message' => curl_error($ch),
            'type'    => 'CurlException',
         ),
      ));
      curl_close($ch);
      throw $e;
   }
   curl_close($ch);
   return $result;
}

1 个答案:

答案 0 :(得分:1)

将CURLINFO_HEADER_OUT选项添加到curl句柄,然后在执行后调用curl_getinfo。

如:

//...
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
//...
curl_exec($ch);
//...
$header = curl_getinfo(CURLINFO_HEADER_OUT);
echo $header;