У меня есть функция, которая отправляет запросы с помощью HTTP-клиента Symfony, например, вот что эта функция использует для отправки запроса:
$response = $client->request($method, $url, [
'headers' => [
'Authorization' => "Bearer $accessToken",
'Accept' => $acceptContentType,
'x-ms-client-request-id' => Traceability::getRequestId(),
...$headers,
],
'body' => $body,
'query' => $query,
'timeout' => 120
]);
Этой функции передается $body
, и я хотел бы расширить ее, чтобы она могла отправлять не только строки, но и двоичные данные, если это необходимо. Сейчас я говорю не о multipart/form-data
, а просто о помещении данных в тело запроса, как это требуется для Поместите запрос Blob в Azure Blob Storage.
Поскольку отправляемые данные не обязательно находятся в файле, а могут быть любым типом ресурса, я решил проверить, является ли это ресурсом:
if (is_resource($body)) {
}
Что мне нужно передать в функцию request
, чтобы клиент Symfony читал из ресурса и отправлял его как тело запроса?
Оказывается, вы можете просто передать ресурс в качестве параметра тела, а все остальное он сделает за вас. Таким образом, код, приведенный в вопросе, будет работать нормально, вам не понадобится дополнительный оператор if.