Заголовки по умолчанию не применяются к запросу

Нового жрать. Я пытаюсь использовать его для связи с конечной точкой REST. Отправляя запрос через curl или используя что-то вроде приложения postman для chrome, он возвращает ожидаемый ответ JSON. Отправка его с помощью guzzle ниже возвращает ошибку 404, аналогичную той, которая будет возвращена, если я нажму URL-адрес без включенных заголовков.

Почему заголовки не попадают в этот запрос?

 // Get extra detail for the object
 $client = new \GuzzleHttp\Client([
   'base_uri' => env('OPENIDM_URL'),
   'headers' => [
     'Content-Type' => 'application/json',
     'X-OpenIDM-Username' => env('OPENIDM_USER'),
     'X-OpenIDM-Password' => env('OPENIDM_PASS'),
     'Authorization' => 'Basic Og=='
   ]
 ]);

 $request = new \GuzzleHttp\Psr7\Request('GET', $attributes['sourceobjectid']);
 $res = $client->send($request);

Я сбросил содержимое объектов клиента и запроса. Выглядят они следующим образом:

Client {#181 ▼
  -config: array:8 [▼
    "base_uri" => Uri {#188 ▼
      -scheme: "https"
      -userInfo: ""
      -host: "my.url.here.com"
      -port: null
      -path: "/openidm"
      -query: ""
      -fragment: ""
    }
    "headers" => array:5 [▼
      "Content-Type" => "application/json"
      "X-OpenIDM-Username" => "myuser"
      "X-OpenIDM-Password" => "mypass"
      "Authorization" => "Basic Og=="
      "User-Agent" => "GuzzleHttp/6.2.1 curl/7.38.0 PHP/5.6.26-0+deb8u1"
    ]
    "handler" => HandlerStack {#169 ▶}
    "allow_redirects" => array:5 [▶]
    "http_errors" => true
    "decode_content" => true
    "verify" => true
    "cookies" => false
  ]
}
Request {#189 ▼
  -method: "GET"
  -requestTarget: null
  -uri: Uri {#190 ▼
    -scheme: ""
    -userInfo: ""
    -host: ""
    -port: null
    -path: "managed/user/eb758aab-7896-4196-8989-ba7f97a7e962"
    -query: ""
    -fragment: ""
  }
  -headers: []
  -headerNames: []
  -protocol: "1.1"
  -stream: null

Любые предложения будут высоко ценится.


person Ryan Price    schedule 24.10.2016    source источник
comment
Это можно сделать с помощью HandlerStack. Загляните в документацию Guzzle - docs.guzzlephp.org/ ru / latest /   -  person mrDinkelman    schedule 02.11.2016


Ответы (1)


Если вы создадите объект запроса самостоятельно, Guzzle не будет применять к нему конфигурации.

Вы должны либо использовать удобные HTTP-методы (get, put и т. Д.), Вызываемые клиентом, либо использовать специальное промежуточное ПО.

Первый проще, второй дает больше силы, но и ответственности тоже.

person mark.sagikazar    schedule 09.11.2016