Пример #1
0
 public function post($url, $data = array(), $params = null)
 {
     if (!is_array($params)) {
         $params = array('resultcb' => $params);
     }
     if (!isset($params['uri']) || !isset($params['host'])) {
         $prepared = HTTPClient::prepareUrl($url);
         if (!$prepared) {
             if (isset($params['resultcb'])) {
                 call_user_func($params['resultcb'], false);
             }
             return;
         }
         list($params['host'], $params['uri']) = $prepared;
     }
     if (!isset($params['version'])) {
         $params['version'] = '1.1';
     }
     if (!isset($params['contentType'])) {
         $params['contentType'] = 'application/x-www-form-urlencoded';
     }
     $this->writeln('POST ' . $params['uri'] . ' HTTP/' . $params['version']);
     $this->writeln('Host: ' . $params['host']);
     if ($this->pool->config->expose->value) {
         $this->writeln('User-Agent: phpDaemon/' . Daemon::$version);
     }
     if (isset($params['cookie']) && sizeof($params['cookie'])) {
         $this->writeln('Cookie: ' . http_build_query($this->cookie, '', '; '));
     }
     $body = '';
     foreach ($data as $k => $v) {
         if (is_object($v) && $v instanceof HTTPClientUpload) {
             $params['contentType'] = 'multipart/form-data';
         }
     }
     $this->writeln('Content-Type: ' . $params['contentType']);
     $body = http_build_query($data, '&', PHP_QUERY_RFC3986);
     $this->writeln('Content-Length: ' . strlen($body));
     $this->writeln('');
     $this->write($body);
     $this->headers = array();
     $this->body = '';
     $this->onResponse->push($params['resultcb']);
     $this->checkFree();
 }