在PHP中通过soapclient发送xml

时间:2015-11-23 20:59:50

标签: php xml soap

我是使用Web服务和理解XML的新手。如果您觉得我应该阅读一些教程或文档,那么如果您能提供一些链接,我会很高兴。

我正在尝试通过Web服务执行一个简单的功能,

在提供的文档中,我有以下信息......

Web服务输入参数:

id ,数据类型= xs:string,lenght:10

密码,数据类型= xs:字符串,长度:25

,数据类型= xs:字符串,长度:20

orderxml ,数据类型= xs:字符串,长度:2 ^ 16

我已经为最后一个参数提供了样本xml,当我尝试运行该函数时,我得到以下错误。

  

致命错误:未捕获的SoapFault异常:[a:InternalServiceFault]   值不能为空。参数名称:

中的属性
 $client = new SoapClient('http://www.example.com/service?wsdl');
 $xml = '<samplexml> </samplexml>';
 $response = $client->Import(
 array(
    'Id' => '1234',
    'password' => '123456',
    'group' => 'test1',
    'orderxml' => $xml

));

当我尝试

 $response = $client->Import('test', 'test');

我得到以下内容......

我尝试了第二个想法,或许我需要发送原始XML?

  

致命错误:未捕获的SoapFault异常:[a:DeserializationFailed]   格式化程序在尝试反序列化时抛出异常   消息:反序列化操作的请求消息正文时出错   '进口'。从命名空间结束元素'Body'   期待'http://schemas.xmlsoap.org/soap/envelope/'。找到元素   来自命名空间''的'param1'。第2行,第162位。

1 个答案:

答案 0 :(得分:0)

阿德里安 -

从你提供的片段中,没有太多东西可以确定你想要做什么。在不知道WSDL的确切性质的情况下,很难说出发生了什么 - 导入有效请求,是否采用正确格式等等。

我建议将您的WSDL加载到SOAPUI中并验证您的XML格式是否正确。在用PHP实际编写SOAP请求之前,这是一个非常有用的工具。

  

http://www.soapui.org/

然后,我建议引用SoapClient类的PHP手册来正确格式化代码。

  

http://php.net/manual/en/class.soapclient.php