我对PHP XML请求和响应有点失落。我需要将USPS的费率计算器API改编成一个网站,我所知道的就是他们提供的XML。现在,我很想知道如何使用PHP将项目的ZIP和WEIGHT提交到他们的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<sup>&reg;</sup></MailService>
<Rate>24.85</Rate>
</Postage>
</Package>
</RateV4Response>
最后我需要在checkout.php页面中找到它。
答案 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”。