【问题标题】:Request XML data from other server从其他服务器请求 XML 数据
【发布时间】:2018-01-06 10:20:03
【问题描述】:

我正在尝试使用 Namecheap 的 API 来获取域信息,尽管他们的 API 文档没有很好地解释,这将是我第一次使用 XML 数据,我正在尝试从 XML 文件中返回数据.

我目前正在使用一个表单向这个 XML 请求添加变量和 POST/GET 数据,提交时,XML 页面显示,这就是结束。

我想知道如何使用 PHP 发送和接收这些数据?

这是我目前所拥有的......

非常简单:

<form action="https://api.namecheap.com/xml.response" method="POST">
              <input type="hidden" id="ApiUser" name="ApiUser" value="user" />
              <input type="hidden" id="UserName" name="UserName" value="user" />
              <input type="hidden" id="ApiKey" name="ApiKey" value="###" />
              <input type="hidden" id="Command" name="Command" value="namecheap.domains.check" />
              <input type="hidden" id="ClientIp" name="ClientIp" value="<? echo $_SERVER['REMOTE_ADDR']; ?>" />
              <input type="text" id="DomainList" name="DomainList"  />
              </form>

就像我说的,这让我直接进入 XML 文件。我在想我可能需要执行 POST ISSET 或其他操作...

<?
if(isset($_POST['domain_check'])){
   PERFORM XML STUFF HERE
}
?>

但我不知道如何以这种方式发送或接收数据,因为我是初学者。数据返回如下:

<ApiResponse xmlns="http://api.namecheap.com/xml.response" Status="OK">
<Errors/>
<Warnings/>
<RequestedCommand>namecheap.domains.check</RequestedCommand>
<CommandResponse Type="namecheap.domains.check">
<DomainCheckResult Domain="test.com" Available="false" ErrorNo="0" Description="" IsPremiumName="false" PremiumRegistrationPrice="0" PremiumRenewalPrice="0" PremiumRestorePrice="0" PremiumTransferPrice="0" IcannFee="0" EapFee="0"/>
</CommandResponse>
<Server>PHX01APIEXT01</Server>
<GMTTimeDifference>--4:00</GMTTimeDifference>
<ExecutionTime>1.061</ExecutionTime>
</ApiResponse>

请告知我执行此操作的最佳方法?谢谢。

【问题讨论】:

    标签: php xml api dns


    【解决方案1】:

    要解析响应,请尝试使用 simple_xml,

    $xml=simplexml_load_string($myXMLData) or die("Error: Cannot create object");
    print_r($xml);
    

    尝试使用 cURL,这样您就不必手动提交表单,我尚未对此进行测试,但这个示例应该可以帮助您进行操作

    <?php
    
     $ch = curl_init();
    
     $baseUrl = 'https://api.sandbox.namecheap.com/xml.response?ApiUser=ncuser&ApiKey=apikey&UserName=ncuser&ClientIp=121.22.123.22&Command=namecheap.domains.check&DomainList=domain1.com,domain2.com';
    
    
     $url = $baseUrl . $query;
    
     curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
     $output = curl_exec($ch);
     if ($output === false) {
         die(curl_error($ch));
     }
     //print_r(curl_getinfo($ch));
     curl_close($ch);
     return $output;
    

    【讨论】:

    • 这为我指明了正确的方向,脚本似乎运行良好,感谢您的帮助。
    猜你喜欢
    • 2018-01-09
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-26
    相关资源
    最近更新 更多