我真的是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响应,但我不知道如何捕获它