0

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

到目前为止,这就是我所拥有的:

  • checkout.php 向 uspsRateCalculator.php 提交 ZIP 和 WEIGHT
  • 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 页面。

4

1 回答 1

0

您可能想使用 cURL。

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

$xml 变量似乎生成了您要查询的 URL(在将 SERVER/PATH 替换为要查询的正确 usps 服务器/位置之后)。将其作为 URL 传递,如链接页面上的 cURL 示例中所示。

您从 curl_exec 返回的 XML 应该类似于您包含的响应 XML。从那里,PHP 有一个 xml 阅读器类,您可以使用它来提取您想要的信息(或者如果您只是想获取“速率”,那么正则表达式可能会更轻量级)。

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

于 2013-06-07T19:42:45.527 回答