Какой запрос выдает функция PHP cURL? - PullRequest
0 голосов
/ 01 сентября 2011

В настоящее время я пишу службу Windows на C #, которая интегрируется со страницей 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 Ответ

1 голос
/ 01 сентября 2011

Добавьте опцию CURLINFO_HEADER_OUT к описателю curl, а затем вызовите curl_getinfo для него после выполнения.

Как в:

//...
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
//...
curl_exec($ch);
//...
$header = curl_getinfo(CURLINFO_HEADER_OUT);
echo $header;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...