WordPress中使用wp_remote_post调用SOAP接口的数据

2021-05-22 0 1,818 百度已收录

相对于REST API, SOAP 是一种对照庞大的 Web Service 接口,理论上,我们可以使用 PHP 的SoapClient 类来接见 SOAP 接口获取数据。

在开发一个WordPress主题的时刻,我们实验过使用这个类来接见一下用户同步的 API,可经由多次实验,都不能乐成,遂放弃,实验使用 WordPress 的 wp_remote_post 函数来接见这个接口,很快乐成了。

准备需要发送的SOAP接口的数据

凭证SOAP接口文档,我们先准备好需要发送到SOAP的数据,如下,这些数据是一个尺度的PHP数组。每个SOAP接口需要的数据纷歧样,下面的数据只是示例,详细使用的时刻,请凭证自己的需要准备这些数据。

  1. $params = [
  2.     'data' => [
  3.         'header' => [
  4.             'security'   => [],
  5.             'time'       => '2017-12-06',
  6.             'sender'     => 'user1',
  7.             'where'      => "time between '2020-07-25 00:00:00' and '2020-07-30 13:59:03'",
  8.         ],
  9.     ],
  10. ];

转换后的,需要现实发送的SOAP接口的 XML 数据,由于SOAP使用的是XML花样的数据,在发送数据之前,我们需要先把上面的数组转化成XML花样。

  1. $xml = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:izn="http://example.com/service">
  2.    <soapenv:Header/>
  3.    <soapenv:Body>
  4.       <izn:doQuery>
  5.          <string>' . json_encode($params) . '</string>
  6.       </izn:doQuery>
  7.    </soapenv:Body>
  8. </soapenv:Envelope>';

使用 wp_remote_post 函数发送数据到 SOAP 的主要代码

转换之后,我们需要把这个 XML 数据作为 HTTP 的 body 信息发送给 SOAP,同时需要设置一下 HTTP Header,说明我们需要传输的数据是 xml,并设置内容长度和超时时间。

  1. $service_url = 'http://example.php/service';
  2.  
  3. $headers = [
  4.     'Content-Type'   => 'text/xml',
  5.     'Content-Length' => strlen($xml),
  6.     'timeout'        => 600,
  7. ];
  8.  
  9. $response = wp_remote_post($service_url, [
  10.     'headers' => $headers,
  11.     'body'    => $xml,
  12. ]);

从SOAP获取的数据花样也是 XML 花样的,我们凭证需要转换成 PHP 工具或数组来使用就可以了。

使用 PHP cURL 库获取 SOAP 数据

本质上,WordPress 的 wp_remote_post 函数是通过 PHP 的 cURL 库请求网络的,以是我们也可以直接使用 cURL 来请求 SOAP 接口获取数据。

  1. $ch = curl_init();
  2. curl_setopt($ch, CURLOPT_URL, $service_url);
  3. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  4. curl_setopt($ch, CURLOPT_TIMEOUT, 1000);
  5. curl_setopt($ch, CURLOPT_POST, true);
  6. curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); // the SOAP request
  7.  
  8. // converting
  9. $response = curl_exec($ch);
  10. curl_close($ch);

凭证我们的履历,SOAP相对于REST API,使用起来相当穷苦,若是是构建自己的 API,建议优先使用 REST API,对节约不少时间。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!3308869544
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有猫币奖励和额外收入!

主题镇 WP教程 WordPress中使用wp_remote_post调用SOAP接口的数据 https://zhutizhen.com/14875.html

永远为用户服务的镇长!

常见问题
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或联络我们。
查看详情

相关文章