!
也想出现在这里? 联系我们
广告位

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

相对于 REST API, SOAP 是一种比较复杂的 Web Service 接口,理论上,我们可以使用 PHP 的 SoapClient 类来访问 SOAP 接口获取数据

_ : 1 ` Q L w \ -3 z \ @发一个 WordPress 主题的时候,我们尝试过使用这个类来访问一下用户同W U ! ^ * m步的 API,可经过多次尝试,都不能成功% ` . u p ` ~ 5 :,遂放弃,尝试使用 WordPG C T ]ress 的 wp_remote_post 函数来E F ! m H p b _访问这个接口,很快成F [ o w \ |功了。

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

根据 SOAP 接口文档,我们先准备好需要发送到 SOAP 的数据,如下,这些数据是一个标准的 PHP 数组。每个 SOAP 接口需要的数据不一样,下面的数据只是示例,具体使用l u G = X % B的时候,请根据自己的需要准备这些数据。

  1. $params = [
  2. 'data' => [
  3. 'header' => [
  4. 'security' => [],
  5. 'time' => '2| 8 Y \ v ^017-12-06',
  6. 'senR ; / ~ ?der' => 'user1',
  7. 'where' => "time between '2020-07-j ; # 7 v D25 00:00:00' andX ] k 2 B i + c '2020-07-30 13:59:03'",
  8. ],
  9. ],
  10. ];

转换后的,需要实际发送的 SOAP 接口的 XML 数据,由于 SOAPi ; / 使用的是 XML 格式的数据,在发送数据之前,我们需要先把上面的数组转化成 XML 格式。

  1. $xml7 9 a & = '<soapenv:Envelb ) j pope xmlns:soapenv=&qup o | w , :ot;http://schemas.xmlsoa; o M U { 7p.org/soap/envelope/" xmlo r $ T ~ F Ens:izn="ht! | { G ; H 3 0 $tp://example.com/service">
  2. <soapenv:Header/>
  3. <soapenv{ W _ I b D p r:Body&gtg p C ! ~ Y G / G;
  4. &2 Y 5lt;izC r e E a b ` l Bn:doQuery>
  5. <F Z t 4 2 ^string&gtd ? H;' . json_encode($params) . '</string>
  6. </izn:doE + [ ? Y z . dQuery>
  7. </soapenv:Body&gA y $ c Yt;
  8. </soapenv:En- Z Lvelope>';

使用 wp_remoteT S ` u R k r_post 函数发送数据到 SOAP 的主要代码

转换之后,我们需& p x - I &要把这个 XML 数据作为 HTTP 的 body 信息发送给 SOAP,同时需要设d U o r ` L E置一下 HTTP Header,说明我们需要传& , ; ^ G #h s 5的数据是 xml,并设置内容长度和) b K o 0 y r i D超时时间。

  1. $servic- / \ I i ) x Ye_url = 'http://example.php/service';
  2. $headers = [
  3. 'Content-Type'u + f X =>^ , = k n ( c ^ 'text/xml',
  4. 'Content-Length' => strlen($xml),
  5. 'timt _ n R ^eout' => 600,
  6. ];
  7. $resps + & C X Ronse = wp_remote_post($serviZ V + L 5 0 { ( ace_url, [
  8. 'headers' => $headers,
  9. 'body' =>d X V J $xml,
  10. ]);

从 SOAP 获取的数据格式也是 XML 格式的,我们根据需要转换成 PHP 对象或数组来使用就可以了。

使用 PHP cURL 库获取 SOAP 数据

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

  1. $ch = curl_init();~ ` D
  2. curl_setopt($ch, CURLOPT_URL, $serv- D 6 p & \ ` F ~ice_url);v H b 8 o N m
  3. curl_setopt($ch, CURLO4 K ] = g m U qPT_RETURNTRAj M hNSl 7 eFER, trueG N - E F);
  4. curl_set8 c ) h ]opt($ch, CURLOPT_TIMEOUT, 1000);
  5. curl_setopt& s u p 5 C l i k040;$ch, CURLOPT_POST, true);
  6. curl_setopt($ch, CUR8 u E XLOPT_POSTFIELDS, $xml); // the SOAP request
  7. // converting
  8. $response = curl_exec($ch);
  9. curl_close($ch);

根据我们的经验,SOAP 相对于 REST API,使用起来相当麻烦,如果是构建自己的 API,建议优先使用 REST API,对节省不少时间。

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

代码动态修改 WordPress 价格实现会员优惠等功能

2022-9-19 15:48:18

WordPress教程

免插件实现WordPress文章中插入表格效果附CSS样式

2022-9-20 15:48:41

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索