PHP发送和接收XML请求和响应

时间:2013-06-07 19:23:13

标签: php xml request response usps

我对PHP XML请求和响应有点失落。我需要将USPS的费率计算器API改编成一个网站,我所知道的就是他们提供的XML。现在,我很想知道如何使用PHP将项目的ZIP和WEIGHT提交到他们的API。

截至目前,这就是我所拥有的:

  • checkout.php,它向uspsRateCalculator.php提交ZIP和重量
  • uspsRateCalculator.php收到ZIP和WEIGHT,需要申请USPS API(我丢失了)

以下是uspsRateCalculator.php的代码

$xml = rawurlencode('http://SERVER/PATH?API=RateV4&XML=<RateV4Request USERID="023TAHAR4995" ><Revision/>
     <Package ID="1ST">
          <Service>PRIORITY</Service>
          <ZipOrigination>44106</ZipOrigination>
          <ZipDestination>'.$zip.'</ZipDestination>
          <Pounds>'.$pounds.'</Pounds>
          <Container>NONRECTANGULAR</Container>
          <Size>LARGE</Size>
          <Width>15</Width>
          <Length>30</Length>
          <Height>15</Height>
          <Girth>55</Girth>
     </Package>
</RateV4Request>');

我如何“请求”这个?然后,我怎样才能获得看起来像这样的响应?

<?xml version="1.0" encoding="UTF-8"?>
<RateV4Response>
     <Package ID="1ST">
          <ZipOrigination>44106</ZipOrigination>
          <ZipDestination>20770</ZipDestination>
          <Pounds>1</Pounds>
          <Ounces>8</Ounces>
          <Container>NONRECTANGULAR</Container>
          <Size>LARGE</Size>
          <Width>15</Width>
          <Length>30</Length>
          <Height>15</Height>
          <Girth>55</Girth>
          <Zone>3</Zone>
          <Postage CLASSID="1">
               <MailService>Priority Mail&lt;sup&gt;&amp;reg;&lt;/sup&gt;</MailService>
               <Rate>24.85</Rate>
          </Postage>
     </Package>
</RateV4Response>

最后我需要在checkout.php页面中找到它。

1 个答案:

答案 0 :(得分:0)

您可能想要使用cURL。

http://www.php.net/manual/en/function.curl-exec.php

$ xml变量似乎生成了您要查询的URL(在用适当的usps服务器/位置替换SERVER / PATH以进行查询之后)。将其作为链接页面上的cURL示例中显示的URL传递。

从curl_exec返回的XML应该与您包含的响应XML类似。从那里开始,PHP有一个xml阅读器类,您可以使用它来提取所需的信息(或者如果您只想获取'rate',那么正则表达式可能会更轻一些。)

编辑:如果您在该文档页面中遗漏了它,则需要为curl-exec设置CURLOPT_RETURNTRANSFER标志以返回内容而不仅仅是“SUCCESS”。