Goutte\Client::doRequest PHP 메소드

doRequest() 보호된 메소드

protected doRequest ( Symfony\Component\BrowserKit\Request $request ) : Symfony\Component\BrowserKit\Response
$request Symfony\Component\BrowserKit\Request
리턴 Symfony\Component\BrowserKit\Response
    protected function doRequest($request)
    {
        $headers = array();
        foreach ($request->getServer() as $key => $val) {
            $key = strtolower(str_replace('_', '-', $key));
            $contentHeaders = array('content-length' => true, 'content-md5' => true, 'content-type' => true);
            if (0 === strpos($key, 'http-')) {
                $headers[substr($key, 5)] = $val;
            } elseif (isset($contentHeaders[$key])) {
                $headers[$key] = $val;
            }
        }
        $cookies = CookieJar::fromArray($this->getCookieJar()->allRawValues($request->getUri()), parse_url($request->getUri(), PHP_URL_HOST));
        $requestOptions = array('cookies' => $cookies, 'allow_redirects' => false, 'auth' => $this->auth);
        if (!in_array($request->getMethod(), array('GET', 'HEAD'))) {
            if (null !== ($content = $request->getContent())) {
                $requestOptions['body'] = $content;
            } else {
                if ($files = $request->getFiles()) {
                    $requestOptions['multipart'] = [];
                    $this->addPostFields($request->getParameters(), $requestOptions['multipart']);
                    $this->addPostFiles($files, $requestOptions['multipart']);
                } else {
                    $requestOptions['form_params'] = $request->getParameters();
                }
            }
        }
        if (!empty($headers)) {
            $requestOptions['headers'] = $headers;
        }
        $method = $request->getMethod();
        $uri = $request->getUri();
        foreach ($this->headers as $name => $value) {
            $requestOptions['headers'][$name] = $value;
        }
        // Let BrowserKit handle redirects
        try {
            $response = $this->getClient()->request($method, $uri, $requestOptions);
        } catch (RequestException $e) {
            $response = $e->getResponse();
            if (null === $response) {
                throw $e;
            }
        }
        return $this->createResponse($response);
    }

Usage Example

예제 #1
0
파일: Client.php 프로젝트: c2is/walker
 public function doRequest($request)
 {
     $uri = $request->getUri();
     if ($this->walker->isUrlToCheck($uri, "")) {
         $response = parent::doRequest($request);
         $statusCode = $response->getStatus();
         $this->lastUri = $uri;
         $this->lastStatus = $statusCode;
         $this->walker->storage->add("stats", array("URL" => $uri, "STATUS" => $statusCode, "CALLED IN" => $this->lastReferer));
     } else {
         $headers[] = "";
         $statusCode = $this->walker->storage->find("stats", $uri)[1];
         $response = new Response("", $statusCode, $headers);
     }
     $this->walker->urlsVisited[] = $uri;
     return $response;
 }
All Usage Examples Of Goutte\Client::doRequest