CMFX下配置SOAP 遇到点问题求大师指点


1、控制器

<?php
namespace Portal\Controller;
use Common\Controller\HomebaseController;
use Common\Model\SoapModel;
class IndexController extends HomebaseController {
    public function index(){
         file_put_contents("F:/ThinkCMFX/data/logs/logs.log", time(),FILE_APPEND);
         ini_set('soap.wsdl_cache_enabled','0');    //关闭WSDL缓存
        //打开WSDL
        if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']=='POST') {
            $url='http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].$_SERVER['PHP_SELF'].'?wsdl';
            $servidorSoap = new \SoapServer($url);
            $servidorSoap->setClass(get_class(new SoapModel()));
            $servidorSoap->handle();
        }else{
            vendor('wsdl.SoapDiscovery');//导入类库
            // 创建WSDL
            $disco = new \SoapDiscovery(get_class(new SoapModel()),'Solsoft_YourCode');
            if (isset($_SERVER['QUERY_STRING']) && strcasecmp($_SERVER['QUERY_STRING'],'wsdl')==0) {
                header("Content-Type:text/xml;charset=UTF-8");
                echo ($disco->getWSDL());exit();
            }else {
                header("Content-Type:text/xml;charset=UTF-8");
                echo ($disco->returnWSDL());exit();
            }
        }
    }
    
    public function clint(){
        $wsdl = $url='http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].$_SERVER['PHP_SELF'].'?wsdl';;
        $client = new \SoapClient($wsdl);
        try{
            $result = $client->test();
            echo $result;
        }catch (\SoapFault $f){
            echo "Error Message: {$f->getMessage()}";
        }
    }
}


2、xml文件

图片.png


运行 http://dev.thinkcmf.com/index/clint 可以成功运行

图片.png

但是同样的代码放的Api模块下:


控制器:

<?php
namespace Api\Controller;
use Think\Controller;
use Common\Model\SoapModel;
class SoapController extends Controller
{public function index(){
        $server_post_url = "dev.thinkcmf.com:80/Api/soap/index";
        $server_wsdl_url = "dev.thinkcmf.com:80/Api/soap/index";
         ini_set('soap.wsdl_cache_enabled','0');    //关闭WSDL缓存
        //打开WSDL
        if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']=='POST') {
            $url='http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'] . $_SERVER['PHP_SELF'].'?wsdl';
            $servidorSoap = new \SoapServer($server_wsdl_url);
            $servidorSoap->setClass(get_class(new SoapModel()));
            $servidorSoap->handle();
        }else{
            vendor('wsdl.SoapDiscovery');//导入类库
            // 创建WSDL
            $disco = new \SoapDiscovery(get_class(new SoapModel()),'msrenyi',$server_wsdl_url,$server_post_url);
            
            if (isset($_SERVER['QUERY_STRING']) && strcasecmp($_SERVER['QUERY_STRING'],'wsdl')==0) {
                header("Content-Type:text/xml;charset=UTF-8");
                echo ($disco->getWSDL());exit();
            }else {
                header("Content-Type:text/xml;charset=UTF-8");
                echo ($disco->returnWSDL());exit();
            }
        }
    }
    
    public function clint(){
        ini_set('soap.wsdl_cache_enabled','0');    //关闭WSDL缓存
        
        //$wsdl = $url='http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].$_SERVER['PHP_SELF'].'?wsdl';
        $server_wsdl_url = "http://dev.thinkcmf.com:80/Api/soap/index?wsdl";
        libxml_disable_entity_loader(false);
        $client = new \SoapClient("http://dev.thinkcmf.com:80/Api/soap/index?wsdl");try{
            $result = $client->test();
            echo $result;
        }catch (\SoapFault $f){
            echo "Error Message: {$f->getMessage()}";
        }
    }
    
    public function test() {
        $url = 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].$_SERVER['REQUEST_URI'].$_SERVER['PHP_SELF'];
        echo   'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].$_SERVER['REQUEST_URI'].$_SERVER['PHP_SELF'];
        $wsdl = $url='http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].$_SERVER['PHP_SELF'].'?wsdl';
        //  dump($_SERVER);
        
    }
}


XML文件:

图片.png


再运行:

图片.png


不能远程调用了,求大师指点。。。。谢谢。

打赏

评论

暂时关闭,稍后恢复~
文档请看10遍以上!有问题可加QQ群!
发表话题

源素材推荐

提问必知

0.话题发布后没及时显示,请联系官方QQ群管理;
1.话题支持代码,qq截屏直接粘贴,和QQ群一样;
2.问题描述清,比如服务器版本,程序版本;
3.能上代码,就不用文字;
4.把问题发到话题后再发QQ群;
5.如果感觉回复者解答的不错,可以发红包!
6.多帮助别人也是对自己的锻炼!
7.付费讨论中只有提问者和付费用户才可以查看回复

积分规则

1.评论积分+1;每天最多10次奖励
2.发布话题积分+1;每天最多5次奖励
3.垃圾评论积分-500;
4.黄色,暴力,违反我国法律评论直接封号


ThinkCMF 8.0.1发布啦!节日快乐! 立即体验!