当前位置: 首页 > 知识库问答 >
问题:

从现有的WSDL创建SOAP服务器返回NULL

慕容玉书
2023-03-14

我需要从现有的WSDL文件为使用OCPP协议的系统创建一个中心系统(SOAP服务器)。(开放充电桩协议)

我已经成功地在非wsdl模式和wsdl模式下编写了测试SOAP服务器和客户机,但是当我尝试使用现有的wsdl时,我得到的只是一堆错误(这并不能告诉我太多)

可以在此处找到WSDL文件(中央系统和chargepoint。抱歉,无法发布更多链接..)

我已经修复了一些错误,但是不能越过这个。
我想server.php有一个错误,没有返回任何东西,但是我不知道为什么或者如何使它工作。

为什么服务器不能识别请求或这里发生了什么?

变量转储($client)-

String(201)msgstr"POST /testi/OCPPServer.phpHTTP/1.1主机:127.0.0.1连接:保持存活用户代理:PHP-SOAP/5.6.8内容类型:应用程序/肥皂xml; charset=utf-8; action="/Heartbeat"内容长度:276"

变量转储($client)-

字符串(276)"1234"

变量转储($client)-

无效的

变量转储($client)-

无效的

这是我得到的代码:

server.php

<?php

ini_set("soap.wsdl_cache_ttl", "0"); 
header("Content-type:text/xml");

# This class handles OCPP central system functions
class OCPPFunctions {

    public function Heartbeat() {
        #$date = date('Y-m-d H:i:s');
        #return array('currentTime' => $date);
        #return $date;      

        #test datetime
        return array('currentTime' => '2010-10-10T10:10:10Z');


  }

    public function BootNotification($params) {
        $result['RegistrationStatus'] = "Accepted";
        $result['currentTime'] = "";
        $result['heartbeatInterval'] = 100000;
        return $result;
    }
}

    $server = new SoapServer("http://127.0.0.1/testi/ocppcp.wsdl", 
        array('trace' => 1));
    $server->setClass('OCPPFunctions'); 
    $server->handle(); 


?>

客户php

<?php 
ini_set("soap.wsdl_cache_ttl", "0"); 

$wsdl_local = "http://127.0.0.1/testi/ocppcs.wsdl";

$client = new SoapClient($wsdl_local,
  array('trace' => 1 ,
     'soap_version' => SOAP_1_2,
     'location' => 'http://127.0.0.1/testi/server.php'));

$header = new SoapHeader('urn://Ocpp/Cs/2012/06/', 'chargeBoxIdentity',    '1234' );
$client->__setSoapHeaders($header);

var_dump($client->__getFunctions());
echo '<br>';
try {
    $result = $client->__soapCall('Heartbeat', array());
    echo $result;
} catch(SoapFault $e) {
    var_dump($e);
}
?>

SoapFaultvar_dump($e)我得到的是:

对象(SoapFault)#3(9){["消息": protected]=

任何帮助或提示将不胜感激!

共有1个答案

温峻熙
2023-03-14
var_dump(client);

如果它返回NULL,则它是一个网络问题;如果它返回soap调用详细信息,则它是一个代码问题。

这是最有可能在你的肥皂选项数组,因为如果我没记错uri和选项仅用于当wdsl是一个空值(NON-WDSL模式)

 类似资料:
  • 我想创建PHP SOAP服务器,但不明白如何正确地做到这一点。下面是server.php文件: client.php文件: wsdl文件: 日食图像 压缩所有文件 我用Eclipse Web服务XML编辑器创建了WSDL文件。现在我不知道如何创建功能。我得到以下错误: 致命错误:在C:\wamp\www\soap websiteservice wsdl\client中未找到未捕获的SoapFaul

  • 我试图开发一个快速的SOAP服务器,以便在使用Spring-Boot和Spring-WS进行测试时使用。首先是合同,因为我有现有的WSDL和XSD文件,并在构建时从它们生成java类。但是,当我通过使用或SOAPUI发送请求时,我会得到以下错误: (亮点: 这个问题的答案是肯定的,我的endpoint是用注释的。完整设置如下: Build.Gradle mocksoapconfig.java 因此

  • 我需要从wsdl(使用wsdl url)为一个操作创建SOAP请求xml。我从一个web服务调用得到一个响应,我需要从这个响应中获取一些值,并将其添加到另一个web服务Soap请求中,然后再次执行一个web服务调用。因此,为了向soap请求添加新值,我需要获得完整的soap请求xml。这就是为什么我问如何从WSDD获得soap请求xml。我不能使用SoapUI,因为它每次都是动态的,所以我需要编写

  • 我的SOAP请求有问题。当我尝试向服务器发出下面的肥皂请求时,它会返回预期的结果。 位置: 输入: 输出: 它返回此连接的令牌。 但是当我尝试处理下面的请求时,它返回整个wsdl文件,而不是成功/失败响应。 地点:http://api.notificationmessaging.com/NMSOAP/NotificationService?wsdl 输入: 输出: 预期输出: 有人能提出实际问题是

  • 我尝试了在原始wsdl中为EPR定义的protocal,以便与Axis2.xml中httpFrontendHostUrl参数中定义的protocal匹配,但这并不有用。 提前谢了。哈里卡。

  • 什么会阻止 命令完成?它永远不会返回到命令提示符或报告任何类型的错误。相反,它反复在“新”,“已分配”,“就绪”和“开始”之间切换。 这是命令: 这是来自“DevOps 2.1工具包 - Docker群”,维克多·法西奇的一本书,我遇到了一个我无法克服的问题...... 我试图在一群三个节点上运行一个反向代理服务,所有节点都在LinuxMint系统上本地运行,而< code>docker serv