【问题标题】:How to request an answer from a SOAP XML API?如何从 SOAP XML API 请求答案?
【发布时间】:2012-10-02 09:33:04
【问题描述】:

我以前从未使用过 SOAP XML api。

我阅读了几个关于 SO 的类似问题,但我无法让它发挥作用。

这是一个简单的请求:

<soap12:Envelope xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns:xsd=”http://www.w3.org/2001/XMLSchema” xmlns:soap12=”http://www.w3.org/2003/05/
soap-envelope”>
<soap12:Body>
<CheckDomainAvailability xmlns=”https://live.domainbox.net/”>
<AuthenticationParameters>
<Reseller>myreseller</Reseller>
<Username>myuser</Username>
<Password>mypassword</Password>
</AuthenticationParameters>
<CommandParameters>
<DomainName>checkadomain.co</DomainName>
<LaunchPhase>GA</LaunchPhase>
</CommandParameters>
</CheckDomainAvailability>
</soap12:Body>
</soap12:Envelope>

我已经联系过他们,但他们不提供 PHP API。

我想使用 PHP 中内置的 SoapClient 类。

问题是: 如何发送请求并打印答案?

【问题讨论】:

标签: php xml api soap


【解决方案1】:

为了使这项工作正常进行,我需要更改第一行以将正确版本的 soap 更改为 1.2。 也是之前的评论

$client = new SoapClient('https://live.domainbox.net/?WSDL', array('soap_version' => SOAP_1_2));

// populate the inputs....
    $params = array(
       'AuthenticationParameters' => array(
          'Reseller' => '',
          'Username' => '',
          'Password' => ''
        ),
        'CommandParameters' => array(
            'DomainName' => '',
            'LaunchPhase' => ''
        )
    );

$result = $client->CheckDomainAvailability($params);

print_r($result);

【讨论】:

  • 感谢分享 ;) 编码愉快
【解决方案2】:

看起来您的 WSDL 位于 https://live.domainbox.net/?WSDL

这是一个使用原生 PHP SoapClient 的示例。

$client = new SoapClient('https://live.domainbox.net/?WSDL');

// populate the inputs....
$params = array(
    'AuthenticationParameters' => array(
        'Reseller' => '',
        'Username' => '',
        'Password' => ''
    ),
    'CommandParameters' => array(
        'DomainName' => '',
        'LaunchPhase' => ''
    )
);

$result = $client->CheckDomainAvailability($params);

print_r($result);

【讨论】:

  • WOOOW 你是怎么发现的?非常感谢,非常感谢 MrCode!
  • 呃,它抛出一个错误:未捕获的 SoapFault 异常:[WSDL] SOAP-ERROR:解析 WSDL:无法从“live.domainbox.net/?WSDL”加载:无法加载外部实体“live.domainbox.net/?WSDL” . (我更改设置以反映我的凭据)
  • 链接中有报价吗?如果不是,那么这是服务器/网络问题 - 您的服务器没有外部访问权限,因此无法连接到 WSDL。您的房东将能够提供帮助。
  • 谢谢,我正在更新 SOAP 扩展,看起来安装的那个已损坏。感谢您的支持。
  • 我现在从 SOAP 服务器收到的答案是:身份验证失败:身份验证参数无效。 API 的技术支持告诉我检查我的请求。我如何知道 PHP 脚本是否为此服务器生成了有效的 XML 请求?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多