在WordPress中使用wp_remote_post调用SOAP接口的数据
文 / @UTHEME
SOAP接口的数据发送
我是小本本,今天要讲的主题是如何发送SOAP接口数据。
相对于RESTAPI,SOAP是一种比较复杂的WebService接口,理论上,我们可以使用PHP的SoapClient类来访问SOAP接口获取数据。
在开发一个WordPress主题的时候,我们尝试过使用这个类来访问一下用户同步的API,可经过多次尝试,都不能成功,遂放弃,尝试使用WordPress的wp_remote_post函数来访问这个接口,很快成功了。
准备需要发送的SOAP接口的数据
根据SOAP接口文档,我们先准备好需要发送到SOAP的数据,如下,这些数据是一个标准的PHP数组。每个SOAP接口需要的数据不一样,下面的数据只是示例,具体使用的时候,请根据自己的需要准备这些数据。
$params=[
'data'=>[
'header'=>[
'security'=>[],
'time'=>'2017-12-06',
'sender'=>'user1',
'where'=>"timebetween'2020-07-2500:00:00'and'2020-07-3013:59:03'",
],
],
];
转换后的,需要实际发送的SOAP接口的XML数据
由于SOAP使用的是XML格式的数据,在发送数据之前,我们需要先把上面的数组转化成XML格式。
$xml='<soapenv:Envelopexmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"xmlns:izn="http://example.com/service">
<soapenv:Header/>
<soapenv:Body>
<izn:doQuery>
<string>'.json_encode($params).'</string>
</izn:doQuery>
</soapenv:Body>
</soapenv:Envelope>';
使用wp_remote_post函数发送数据到SOAP的主要代码
转换之后,我们需要把这个XML数据作为HTTP的body信息发送给SOAP,同时需要设置一下HTTPHeader,说明我们需要传输的数据是xml,并设置内容长度和超时时间。
$service_url='http://example.php/service';
$headers=[
'Content-Type'=>'text/xml',
'Content-Length'=>strlen($xml),
'timeout'=>600,
];
$response=wp_remote_post($service_url,[
'headers'=>$headers,
'body'=>$xml,
]);
从SOAP获取的数据格式也是XML格式的,我们根据需要转换成PHP对象或数组来使用就可以了。
使用PHPcURL库获取SOAP数据
本质上,WordPress的wp_remote_post函数是通过PHP的cURL库请求网络的,所以我们也可以直接使用cURL来请求SOAP接口获取数据。
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$service_url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_TIMEOUT,1000);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$xml);//theSOAPrequest
//converting
$response=curl_exec($ch);
curl_close($ch);
根据我们的经验,SOAP相对于RESTAPI,使用起来相当麻烦,如果是构建自己的API,建议优先使用RESTAPI,对节省不少时间。

相关文章
-
盘点2023年依然好用的4款WordPress轻社区主题 2023-05-29 08:00:54
-
盘点2023年最好用的三款wordpress知识库主题 2023-05-29 08:00:26
-
个人网站选择WordPress还是Typecho? 2023-05-28 23:33:13
-
wordpress建外贸B2C独立站的五大优势 2023-05-28 23:05:49
-
盘点2023年依然好用的3款wordpress文档主题 2023-05-28 23:02:19
-
盘点2023年依然好用的3款wordpress外贸网站主题 2023-05-28 22:59:41
-
盘点2023年依然好用的3款wordpress电商主题 2023-05-28 22:56:05
-
wordpress后台地址是多少(附:后台地址修改教程) 2023-05-28 22:54:15
-
盘点2023年依然好用的3款wordpress笔记主题 2023-05-28 22:51:13
-
开源wordpress主题:kratos 介绍 2023-05-28 22:47:46