2016-04-13 3 views
1

は私が要求してるAPIはGET HTTPメソッド入れGET値

を期待している私には、例えば

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ヘッダは、要求(POSTGETなど)のための任意タイプ同様に設定されています。

コードの問題は、間違った方法でヘッダーを設定することです。 CURLOPT_HTTPHEADERオプションは、数値索引配列を想定しており、結合配列ではありません。さらに各配列要素は、"key: value"の形式の文字列でなければなりません。

つまり、あなたのprepareRequest方法でそのような変更を行う必要がある。

... 
$key = $this->apiConfig->getAccessTokenKey(); 
$value = $_SESSION[$token]; 
$curlWrapper->setOption(CURLOPT_HTTPHEADER, array(
    "$key: $value" 
)); 
...