2016-04-13 2 views
1

В API я запрашивающий ожидаю это метод GET HTTPПомещенных значения GET в запросе PHP Curl заголовке

Я хочу, чтобы избежать чего-то вроде

domain.com/api/v1/module/user?access_token=er78e9wr7fasf7s9a8fsd7fa8f7sa8f, например.

я предпочел бы иметь возможность запросить

domain.com/api/v1/module/user и установите значение access_token в заголовке, я знаю, что вы можете сделать это с должности, но я хотел бы сделать это для метода GET ,

я в настоящее время имею следующий

public function fetch() 
    { 
     $response = json_decode(
      $this->prepareRequest(
       new \Web\Curl\Wrapper, 
       $this->prepareRequestURL() 
      )->execute() 
     ); 
    } 
    private function prepareRequestURL() 
    { 
     return $this->apiConfig->getBaseDomain() . $this->apiConfig->getUserSelfURL(); 
    } 

    private function prepareRequest(\Web\Curl\Wrapper $curlWrapper, $url) 
    { 
     $curlWrapper->init($url); 
     $curlWrapper->setOption(CURLOPT_RETURNTRANSFER, 1); 
     $curlWrapper->setOption(CURLOPT_HTTPHEADER, array(
      $this->apiConfig->getAccessTokenKey() => $_SESSION[$this->apiConfig->getAccessTokenKey()] 
     )); 
     return $curlWrapper; 
    } 

Мои локоны класса-обертка

private $curl; 

public function init($requestLocation = null) 
{ 
    $this->curl = curl_init($requestLocation); 
} 

public function preparePost($postData) 
{ 
    $this->setOption(CURLOPT_POST, 4); 
    $this->setOption(CURLOPT_POSTFIELDS, $postData); 
    $this->setOption(CURLOPT_SSL_VERIFYPEER, false); 
    $this->setOption(CURLOPT_RETURNTRANSFER, true); 
} 

public function execute() 
{ 
    return curl_exec($this->curl); 
} 

public function setOption($option, $value) 
{ 
    curl_setopt($this->curl, $option, $value); 
} 
+0

Можете ли вы показать то, что вы уже пробовали? – Jer

+0

Нет, как будто я знал, что попробовать, я бы это сделал - я успешно справился с строкой запроса, добавленной к URL-адресу, но я хочу избежать этого жесткого кодирования. @ C0dekid.php –

+0

Возможно, вам стоит взглянуть на это: http://stackoverflow.com/questions/25646692/how-can-i-make-a-request-with-both-get-and-post-parameters- in-php-with-curl Я не знаю, можно ли достичь того, чего вы хотите. – Jer

ответ

1

... и установите значение access_token в заголовке, я знаю, что вы можете сделать это с сообщением, но я хотел бы сделать это для метода GET.

HTTP заголовки устанавливаются в таким же образом для любого типа запроса (POST, GET и т.д.).

Проблема с вашим кодом заключается в том, что вы неправильно устанавливаете заголовки. CURLOPT_HTTPHEADER опция ожидает числовой индексный массив, не ассоциативный массив. Кроме того, каждый элемент массива должен быть строкой в ​​формате "key: value".

Так что вы должны сделать такие изменения в методе prepareRequest:

... 
$key = $this->apiConfig->getAccessTokenKey(); 
$value = $_SESSION[$token]; 
$curlWrapper->setOption(CURLOPT_HTTPHEADER, array(
    "$key: $value" 
)); 
... 
Смежные вопросы