簡體   English   中英

如何對來自客戶端的請求做出尖銳的回應?

[英]How do I make a guzzle response into a response to a request from a client?

我有一個在Web服務器A上運行的應用程序。我有另一個在Web服務器B上運行的應用程序。兩個Web服務器都需要登錄。 我需要做的是請求Web服務器A傳遞到Web服務器B,然后將文件返回給客戶端,而無需讓客戶端登錄到Web服務器B。(換句話說,Web服務器B對客戶端是不可見的,我將我從A向B的請求中照顧身份驗證憑據。 下面的代碼建立在laravel框架上,但是我不認為答案需要特定於laravel。

該代碼有效,但是它只是將文件的HEAD信息返回給調用客戶端。 不是文件本身。

任何幫助將不勝感激!

控制器:

    public function getAudioFile(Request $request)
{
    //This is the id we are looking to pull
    $uid = $request->uniqueid;
    $audioServices = new AudioServices();
    return $audioServices->getWavFile($uid);
}

服務:

    public function getWavFile(String $uniqueId)
{
    $client = new GuzzleHttp\Client(['verify' => false]);
    return $client->request('GET', $this->connectString.$uniqueId, ['auth' =>  ['username', 'password']]);
}

如主教所述,您可以使用Guzzle的接收sink選項來流式傳輸Guzzle請求的響應。

您可以將該流傳遞給控制器​​的響應。 我不確定Laravel是否具有內置的流支持,但是底層的symfony httpfoundation組件可以 在本教程中可以找到其用法的示例。

如果您不想使用Guzzle的接收sink選項,則還可以使用響應本身,因為它實現了PSR-7流對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM