当前位置:   article > 正文

PHP实现调用WebService_php webservice

php webservice

        在一个项目中需要对接一个短信功能,给的是WebService接口,给了java的demo,但是没有PHP的demo,在一些简单的传参时候可以使用Soap来实现对接,但是当一些复杂传参的时候,soap无法传递过去,因此还是可以使用curl方式来实现对接。

        对于简单的参数传递可以使用以下方式实现,先在服务器上面开启soap扩展,重新启动apache。

  1. //get authorization
  2. public static function getAuthorization(){
  3. $data = self::jiami(); //获取加密数据
  4. //WebService接口数据调用 需要开启soap扩展
  5. $client = new \SoapClient("http://127.0.0.1:8888/ws/v1?wsdl");
  6. // print_r($client->__getFunctions()); //查看对外的方法 以及参数
  7. // print_r($client->__getTypes()); // 查看类型
  8. // 组织参数 根据接口具体提供参数组织对应参数
  9. $param = [
  10. 'userCode' => $data['userCode'],
  11. 'password' => $data['password'],
  12. 'unixtick' => $data['unixtick']
  13. ];
  14. $rst =$client->authorization($param);//请求入口函数为【authorization】
  15. $rst = json_encode($rst);
  16. $rst = json_decode($rst ,true);
  17. if ($rst['return']['code'] == 0){
  18. return $rst['return']['result']['token'];
  19. }
  20. }

        其中wsdl为对接方提供一种XML Application,可以用来查看对接方的接口,同时调用的时候也需要用到。

        对用复杂的传参,例如需要传递header,或者传递数组的时候遇到问题可以使用curl。

  1. public static function sendMsg($content,$receiveNumber)
  2. {
  3. $curl = curl_init();
  4. $token = self::getAuthorization();
  5. $xml ='<?xml version="1.0" encoding="utf-16"?>
  6. <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  7. <soap:Header>
  8. <token xmlns="http://v1.ws.api.service.yxt.gooben.com/">'.$token.'</token>
  9. </soap:Header>
  10. <soap:Body>
  11. <submitTask xmlns="http://v1.ws.api.service.yxt.gooben.com/">
  12. <details xmlns="">
  13. <content>'.$content.'</content>
  14. <receiveNumber>'.$receiveNumber.'</receiveNumber>
  15. <transactionId />
  16. </details>
  17. <atTime xmlns="" />
  18. <itfOptions xmlns="">
  19. <itfSmsOption>
  20. <content />
  21. <extCode />
  22. <hasSms>true</hasSms>
  23. <routeName />
  24. </itfSmsOption>
  25. </itfOptions>
  26. </submitTask>
  27. </soap:Body>
  28. </soap:Envelope>';
  29. curl_setopt_array($curl, array(
  30. CURLOPT_URL => 'http://127.0.0.1:8888/ws/v1?wsdl',
  31. CURLOPT_RETURNTRANSFER => true,
  32. CURLOPT_ENCODING => '',
  33. CURLOPT_MAXREDIRS => 10,
  34. CURLOPT_TIMEOUT => 0,
  35. CURLOPT_FOLLOWLOCATION => true,
  36. CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  37. CURLOPT_CUSTOMREQUEST => 'POST',
  38. CURLOPT_POSTFIELDS =>$xml,
  39. CURLOPT_HTTPHEADER => array(
  40. 'Content-Type: charset=UTF-8'
  41. ),
  42. ));
  43. $response = curl_exec($curl);
  44. curl_close($curl);
  45. return $response;
  46. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/65969
推荐阅读
  

闽ICP备14008679号