2017-01-11 2 views
1

Я пытаюсь отправить запрос GET без CURL, но с заголовком. В чем проблема?Отправить запрос GET без CURL

Вот код моего бла бла бла бла бла бла бла:

private function getRequest($url, $data){ 
    $uri = $this->api_url . $url; 
    $content = http_build_query($data); 
    $content = urldecode($content); 

    $options = array(
     'http' => array(
      'header' => "Content-type: application/x-www-form-urlencoded\r\n" . 
          "Authorization : Bearer " . $this->access_token . "\r\n", 
      'method' => 'GET', 
      'content' => $content,//$data = ['key' => 'value'] 
     ), 
    ); 

    $context = stream_context_create($options); 
    var_dump($context); //resource(70) of type (stream-context) 
    if (fopen($uri, 'r', false, $context)) //NO 
     echo "yes"; 
    else 
     echo "no"; 
    fpassthru($fp); //empty 

} 

Здесь $ варианты возврата значения:

Array 
(
    [http] => Array 
     (
      [header] => Content-type: application/x-www-form-urlencoded 
Authorization : Bearer kEQn2I02JOegz6gD4 

      [method] => GET 
      [content] => address=%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0 //cyrillic, with ENG doesn't work anyway 
     ) 

) 
+0

вы пробовали нашли предложения здесь: http://stackoverflow.com/questions/8596311/how-to-make -a-post-request-without-curl – JavaBoy

+0

@JavaBoy 'file_get_contents' не работает –

ответ

0

У вас есть место в заголовках после «авторизации», попробуйте это один:

private function getRequest($url, $data){ 
    $uri = $this->api_url . $url; 

    $options = array(
     'http' => array(
      'header' => "Content-type: application/x-www-form-urlencoded\r\n" . 
         "Authorization: Bearer " . $this->access_token . "\r\n", 
      'method' => 'GET', 
      'content' => http_build_query($data),//$data = ['key' => 'value'] 
     ), 
    ); 

    $context = stream_context_create($options); 
    var_dump($context); //resource(70) of type (stream-context) 
    if (fopen($uri, 'r', false, $context)) //NO 
     echo "yes"; 
    else 
     echo "no"; 
    fpassthru($fp); //empty 

} 
+0

nope, а cURL' Authorization: Bearer' работает хорошо –

+0

Я протестировал его на своем локальном сервере и получил сообщение об ошибке HTTP /1.1 400 Неверный запрос и ответ «нет». Когда я удалил пробел в заголовке, результат был «да» и никаких ошибок. Не могли бы вы включить 'display_errors' и установить' error_reporting' в E_ALL? Может быть, PHP генерирует некоторую ошибку, которая была бы полезной – user2890234

+0

'Warning: file_get_contents (http: // site/api/route/stops): не удалось открыть поток: HTTP-запрос не удался! HTTP/1.1 404 Не найдено в /home/*****api.php в строке 73' –

Смежные вопросы