0

这是我第一次在这里问问题:)

所以,事情是这样的:

我是 Web 服务 WSDL 和 Soap 的新手,但对 PHP 非常有经验。我正在尝试对 WebService 进行 Soap 请求,这是 URL:

http://webservice.monytor.com.br/WSGeope/ImpExpGEOPE.asmx?WSDL

当我尝试做一个不需要参数的请求时,比如“AVL”,我得到的结果很好:

<?php
$options = array('soap_version' => SOAP_1_2, 'trace' => true, 'exceptions' => true, 'cache_wsdl' => WSDL_CACHE_NONE);
$monytor = new SoapClient("http://webservice.monytor.com.br/WSGeope/ImpExpGEOPE.asmx?WSDL", $options);
$result = $monytor->AVL();
?>

生成:

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://webservices.monytor.com.br/WSGeope/">
<env:Body>
<ns1:AVL/>
</env:Body>
</env:Envelope>

返回我:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<AVLResponse xmlns="http://webservices.monytor.com.br/WSGeope/">
<AVLResult>
<anyType xsi:type="xsd:string">AUTOTRAC</anyType>
<anyType xsi:type="xsd:string">CHECKROTA</anyType>
<anyType xsi:type="xsd:string">CONTROLLOC</anyType>

... and so on.

这是完全预期的结果。

但是当我尝试使用一些参数时:

<?php
$options = array('soap_version' => SOAP_1_2, 'trace' => true, 'exceptions' => true, 'cache_wsdl' => WSDL_CACHE_NONE);
$monytor = new SoapClient("http://webservice.monytor.com.br/WSGeope/ImpExpGEOPE.asmx?WSDL", $options);
$result = $monytor->VerifyAccess(array('Empresa' => 1, 'Usuario' => 1, 'Senha' => 'test'));
?>

生成:

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://webservices.monytor.com.br/WSGeope/">
<env:Body>
<ns1:VerifyAccess>
<ns1:Empresa>1</ns1:Empresa>
<ns1:Usuario>1</ns1:Usuario>
<ns1:Senha>test</ns1:Senha>
</ns1:VerifyAccess>
</env:Body>
</env:Envelope>

返回我:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<VerifyAccessResponse xmlns="http://webservices.monytor.com.br/WSGeope/">
<VerifyAccessResult>false</VerifyAccessResult>
</VerifyAccessResponse>
</soap:Body>
</soap:Envelope>

(“Empresa”意为“公司”,“Usuario”意为“用户”,“Senha”意为“密码”,当然我这里发的都是虚构的,但我是用真实的来测试的)

根据 Web 服务支持参数是正确的,但我的请求 XML 应该是这样的:

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<VerifyAccess xmlns="http://webservices.monytor.com.br/WSGeope/">
<Empresa>1</Empresa>
<Usuario>1</Usuario>
<Senha>test</Senha>
</VerifyAccess>
</soap12:Body>

在任何情况下都不会返回错误(我尝试过“try ... catch”),所以我认为请求是好的。

我的问题是:这真的是“错误”返回的原因,还是凭证错误?

如果您在浏览器中访问,还有其他方法说明:http ://webservice.monytor.com.br/WSGeope/ImpExpGEOPE.asmx

提前致谢。

对不起我的英语不好,我是巴西人。

4

0 回答 0