微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php调用webservice接口

项目中使用到了调用三方厂商webService接口。他的接口类似为http://haha.cn:86/BaseInfoService.svc?wsdl,在这里我注意到了wsdl以前从来没有过这种接口的经验,起初想用CURL调用,但是一直失败,后来想到了PHP扩展soap

以下为我的代码

function SendLeads($data){
        header('Content-Type:text/html; charset=utf-8');//设置编码方式UTF-8
        ini_set('soap.wsdl_cache_enabled','0');关闭缓存
        $url = 'http://ddmp.audi-online.cn:86/BaseInfoService.svc?wsdl';
        $client = new \SoapClient($url);
        dump($client);die;
        $para = array(
            'Key'=>$this->User_Key,'RequestType'=>array(
            //    'Type'=>0,//    'MaxID'=>'',//    'MaxTime'=>'',//),
            'RequestObjectList'=>(
                (
                    'ADDRESS'=>null,'BIRTHDAY'=>nesS_PHONE'=>$data['province'],1)">省份
                    'CITY'=>$data['city'],1)">城市
                    'FK_DEALER_ID'=>$data['dealer_name'],1)">经销商编号
                    'COMMENTS'=>$data['name'],'GENDER'=>$this->Leadtype,1)">渠道标识
                    'MEDIA_LEAD_ID'=>$this->User_Key.'xingy'.rand(1000000000,9999999999),'MOBILE'=>$data['mobile'],'MODEL'=>'',1)">意向车型
                    'ORDER_TIME'=>date('Y-m-d H:i:s',1)">time()),1)">下单时间
                    'PHONE'=>车系
                    'USER_KEY'=>设置参数(参数格式为第三方要求的格式) 参数为数组方式传递空数组用array 参数之间用,分隔。 key value形式 => 为指向值
        $jsonData = json_encode($para); 转json
        $date = array('inputParam'=>$jsonData);
        $result = $client->SendLeads($date$array = get_object_vars($result$str = $array['SendLeadsResult'];
        $arr = json_decode($str,1)">trueif($arr['Success']=='1' && $arr['Message']=='执行成功'){
            return json_encode(['code'=>1,'msg'=>'执行成功']);
        }else{
            return json_encode(['code'=>0,'msg'=>'执行失败']);
        }
    }

这里大家可能会遇到一种问题就是在本地调试是成功的,但是上传到服务器就会报错(504),通过和接口提供方沟通发现我们的服务器在出去之前是有防火墙限制的,于是要了他们的端口号,在我们服务器开了相关接口,搞定了!!!希望对大家有帮助,有不足的地方请大家评论指正!谢谢!!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐