将XML发送到Soap Web服务php

时间:2018-08-04 01:00:36

标签: php xml web-services soap wsdl

我真的是Web服务和xml的新手,并且在将xml发送到Web服务器时遇到问题

我正在使用SoapCliente Php类

$client = new SoapClient($wsdlUrl, $soapClientOptions);

我发送字符串没有问题

$param = ["key" => "somekey"];

var_dump($client->somemethod($parms));

但是,我在发送xml数据时遇到问题,这在Web服务文档中是必需的

@WebParam(name = "xml") byte[] xml);

在getTypes方法上:

var_dump($client->__getTypes());

是以这种方式指定的:

base64Binary xml

所以我首先将xml文件存储为字符串变量,然后尝试:

$xmlstring = "some xml";    
$xmltosend = unpack('C*', $xmlstring);
var_dump($client->somemethod($xmltosend));

并且:

$xmlstring = "some xml";   
$xmltosend = base64_encode($xmlstring);
var_dump($client->somemethod($xmltosend));

Web服务始终根据数据发送响应,因此,如果发送正确,我将获得一些成功的xml数据。在这两种情况下,我都会收到此错误:

文件发送不符合已建立的规范:扩展名,编纂

Web服务的文档提供了我正在发送的xml格式作为测试示例,因此我认为xml可以,所以我一无所知。

修改

这正是在文档中删除参数的方式

@WebMethod
@WebResult(name = "RespuestaRecepcionComprobante")
public RespuestaSolicitud validarComprobante(@WebParam(name = "xml") byte[] 
xml);

所以我刚发送了xml字符串,它就起作用了

$param = ["xml" => $xmlstring];
var_dump($client->validarComprobante($param));

可以这样发送数据吗? Web服务读取xml并给我发送OK响应 我也希望有一个xml响应,但我不知道如何捕获它

0 个答案:

没有答案