很多时候,我们需要调用第三方的接口,例如使用 PHP
调用 webservice
接口。
关于 webservice
接口,我们可以直接使用SoapUi
查看或者像对方索要具体地址函数以及参数。
在PHP
里面调用的话,可以使用 SoapClient
,一般PHP
都会开启该扩展,并且相对也比较简单。
定义一个SoapClient
对象:
1 2 3 4 5 6 7 8 9 10
| $client = new SoapClient("webservice地址?wsdl", array( "stream_context" => stream_context_create( [ 'ssl' => ['verify_peer' => false,'verify_peer_name' => false,] ] ) ) );
|
调用测试
调用方式可以直接使用箭头(→)方式调用,注意保证函数名以及参数正确:
1 2 3 4 5
| $parm = ['参数' => "参数值"];
$result = $client->SendPersonMMS($parm);
var_dump($result);
|
#完整代码
完整的操作为:( 参考:https://www.cnblogs.com/xjnotxj/p/6212143.html )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| header("content-type:text/html;charset=utf-8"); try {
$client = new SoapClient("http://XXX/webservice/mmsservice.asmx?wsdl", array( "stream_context" => stream_context_create( array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, ) ) ) ) );
$parm = array('mobile' => ‘136XXXXXX’, 'mmsid' => 'XXX', 'sToken' => 'XXX'); $result = $client->SendPersonMMS($parm);
$result = get_object_vars($result); echo $result["SendPersonMMSResult"];
} catch (SOAPFault $e) { print $e; }
|
XML
格式
如果使用XML
格式,还可以使用 DOMDocument
:
1 2 3 4 5 6 7
| $books = new DOMDocument(); $WsSubmitReq = $books->createElement("参数"); $WsSubmitReq->appendChild($books->createElement("参数", "值")); $WsSubmitReq->appendChild($books->createElement("mobile", $PHONE)); $WsSubmitReq->appendChild($books->createElement("content", $SmsMessage)); $books->appendChild($WsSubmitReq); $parm = array('参数' => $books->saveXML());
|
序列化的内容可保证正确无误,并且会自动转码。