簡體   English   中英

適用於PHP 2的AWS S3 SDK-獲取HTTP請求/響應字符串

[英]AWS S3 SDK for PHP 2 - Get HTTP Request/Response Strings

我有一個用於正在使用的系統的通用HTTP文件訪問API。 為了使其盡可能靈活,它以HTTP字符串的形式返回請求和響應數據。

我當前正在實現一個通過PHP 2AWS開發工具包與S3交互的版本。

有沒有一種簡單的方法可以快速獲取S3Client在執行操作時發出的請求和響應HTTP請求? 如果沒有,還有沒有我可以使用的更零碎的方式呢?

基本上,我需要按需提供請求和響應的全文,或者至少要訪問相關數據(標頭,響應代碼,URL等),以便可以為框架正確填充返回數據。

謝謝。

您可以從命令對象獲取請求或響應對象。 假設$s3擁有Aws\\S3\\S3Client的實例,則可以執行以下操作:

$command = $s3->getCommand('ListObjects', array('Bucket' => '<bucket-name>'));
$request = $command->getRequest();
$response = $command->getResponse();

這些對象具有查看正文,標題,狀態碼等的方法,您可以將它們轉換為字符串以查看字符串形式。

如果要在執行命令時快速查看請求和響應,則可以連接線記錄器,並查看STDOUT(或STDERR)上顯示的內容

$s3->addSubscriber(\Guzzle\Plugin\Log\LogPlugin::getDebugPlugin());
$s3->listObjects(array('Bucket' => '<bucket-name>'));

您將需要查看Guzzle\\Http\\Client類,該類是S3Client的祖先類,以查看其可用的方法。 您始終可以在自己的S3Client子級中覆蓋其中一些方法,以使您更輕松地訪問此信息。

最終,您要查找的數據駐留在Guzzle\\Http\\Message\\Response類的對象中,我相信它是from Guzzle\\Http\\Client::send()

因此,也許在您自己的S3Client實現中,您可以重寫send()方法以發送HTTP請求,然后根據需要處理響應數據。

暫無
暫無

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

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