首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP中读取Amazon Cloudfront API结果

在PHP中读取Amazon Cloudfront API结果
EN

Stack Overflow用户
提问于 2013-04-18 02:44:53
回答 3查看 1.7K关注 0票数 2

我有一个PHP脚本,它通过API向Amazon的Cloudfront提交无效请求。

我可以捕获响应,但返回的文本基本上如下所示:

代码语言:javascript
复制
HTTP/1.0 201 Created
Content-Type: text/xml
Location: https://cloudfront.amazonaws.com/2012-07-01/distribution/distribution ID/invalidation/invalidation ID

<Invalidation xmlns="http://cloudfront.amazonaws.com/doc/2012-07-01/">
   <Id>IDFDVBD632BHDS5</Id>
   <Status>InProgress</Status>
   <CreateTime>2013-04-16T19:37:58Z</CreateTime>   
   <InvalidationBatch>
      <Paths>
         <Items>
            <Path>/image1.jpg</Path>
         </Items>
      </Paths>
      <CallerReference>20130416090001</CallerReference>
   </InvalidationBatch>
</Invalidation>

我基本上只想获取状态值,我想我可以通过正则表达式或一些字符串操作来实现,但我假设有一种更好的方法将返回的数据转换为对象并正确地访问它。

我试过了:

代码语言:javascript
复制
$dom = new DOMDocument();
$dom->loadXML($data);

但是$data不能工作,因为它包含标题部分“HTTP/1.0201...”

有谁知道正确的处理方法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-19 00:10:58

您使用的是什么脚本?您是否考虑过使用AWS SDK for PHP (https://github.com/aws/aws-sdk-php)?

使用AWS SDK for PHP,您可以执行以下操作:

代码语言:javascript
复制
// Instantiate a CloudFront client
$cloudfront = \Aws\CloudFront\CloudFrontClient::factory(array(
    'key'    => 'your-aws-access-key-id',
    'secret' => 'your-aws-secret-key',
));

// Get the status of an invalidation
$invalidationStatus = $cloudfront->getInvalidation(array(
    'DistributionId' => 'your-distribution-id',
    'Id'             => 'your-invalidation-id',
))->get('Status');
票数 5
EN

Stack Overflow用户

发布于 2013-04-18 03:03:02

通常,Http客户端库应该做到这一点,您没有提到使用的那个。

不过,解析响应应该很简单,如下所示:

代码语言:javascript
复制
$dom->loadXML(substr($data, strpos("\n\n", $data)+2))
票数 1
EN

Stack Overflow用户

发布于 2013-06-03 21:41:12

通过执行以下操作来解决此问题。

代码语言:javascript
复制
$resp = substr($resp, strpos($resp, "\r\n\r\n")+4); // This strips out the header

$outputxml = simplexml_load_string($resp); // Converts it to an object in PHP which can be fed back more easily
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16067720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档