Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá!
Talvez esteja repetindo a dúvida, porem não encontrei nenhum que a respondesse.
Estou montando um webservice, apenas para teste, vou precisar implementar em um sistema mais tarde, mas tenho que entendê-lo antes, minha dificuldade está no entendimento do WSDL, aquele xml esta muito confuso pra mim, eu nunca havia trabalhando com isso antes, pesquisei bastante sobre o assunto, e xml não tem segredo, porém tem os chamados namespaces, que estão me confundindo, e o arquivo wsdl está lotado deles, pesquisei sobre, e pelo que entendí serve para q cada tag seja única, como é um URI, aí os namespaces tem URLs aplicadas à eles, porém não entendí direito o porque disso, e também às vezes tem namespaces diferentes com a mesma URL, não entendi isso, enfim, está dadno um erro quando eu acesso meu web service.
Fatal error: Uncaught SoapFault exception: [Client] DTD are not supported by SOAP in C:\xampp\htdocs\web_service\testeBom\client.php:7 Stack trace: #0 [internal function]: SoapClient->__call('recuperarInform...', Array) #1 C:\xampp\htdocs\web_service\testeBom\client.php(7): SoapClient->recuperarInformacoesCancelamento(Array) #2 {main} thrown in C:\xampp\htdocs\web_service\testeBom\client.php on line 7
Vou postar os arquivos
WSDL:
<?xml version='1.0' encoding='UTF-8'?>
<!--xmlns é com namespace-->
<wsdl:definitions name="CancelamentoService"
targetNamespace="http://127.0.0.1/web_service/testeBom/soap.wsdl"
xmlns:ns1="http://schemas.xmlsoap.org/soap/http"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://127.0.0.1/web_service/testeBom/soap.wsdl"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xs:schema elementFormDefault="unqualified"
targetNamespace="http://127.0.0.1/web_service/testeBom/soap.wsdl"
version="1.0" xmlns:ns1="http://127.0.0.1/web_service/testeBom/"
xmlns:tns="http://127.0.0.1/web_service/testeBom/soap.wsdl"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="http://127.0.0.1/web_service/testeBom/soapxml.wsdl" />
<xs:element name="recuperarInformacoesCancelamento" type="tns:recuperarInformacoesCancelamento" />
<xs:element name="recuperarInformacoesCancelamentoResponse"
type="tns:recuperarInformacoesCancelamentoResponse" />
<xs:complexType name="recuperarInformacoesCancelamento">
<xs:sequence>
<xs:element name="cpfdocliente" type="xsd:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="recuperarInformacoesCancelamentoResponse">
<xs:sequence>
<xs:element name="informacoesCancelamento" type="ns1:InformacoesCancelamento" />
</xs:sequence>
</xs:complexType>
</xs:schema>
<xs:schema targetNamespace="http://127.0.0.1/web_service/testeBom/soap.wsdl"
version="1.0" xmlns:tns="http://127.0.0.1/web_service/testeBom/soap.wsdl"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="InformacoesCancelamento" type="tns:InformacoesCancelamento" />
<xs:complexType name="InformacoesCancelamento">
<xs:sequence>
<xs:element name="cancelamentoPermitido" type="xs:boolean" />
<xs:element minOccurs="0" name="percentual" type="xs:float" />
<xs:element minOccurs="0" name="observacao" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
<wsdl:message name="recuperarInformacoesCancelamentoResponse">
<wsdl:part element="tns:recuperarInformacoesCancelamentoResponse"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="recuperarInformacoesCancelamento">
<wsdl:part element="tns:recuperarInformacoesCancelamento"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="CancelamentoService">
<wsdl:operation name="recuperarInformacoesCancelamento">
<wsdl:input message="tns:recuperarInformacoesCancelamento"
name="recuperarInformacoesCancelamento">
</wsdl:input>
<wsdl:output message="tns:recuperarInformacoesCancelamentoResponse"
name="recuperarInformacoesCancelamentoResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CancelamentoServiceSoapBinding" type="tns:CancelamentoService">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="recuperarInformacoesCancelamento">
<soap:operation soapAction="" style="document" />
<wsdl:input name="recuperarInformacoesCancelamento">
<soap:body use="literal" />
</wsdl:input>
<wsdl:output name="recuperarInformacoesCancelamentoResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CancelamentoService">
<wsdl:port binding="tns:CancelamentoServiceSoapBinding"
name="CancelamentoServicePort">
<soap:address
location="http://localhost/soap/server.php" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
CLIENT:
<?php
$clientSoap = new SoapClient("http://127.0.0.1/web_service/testeBom/server.php?wsdl");
$params = array('cpfdocliente' => '00011122233344');
//var_dump($clientSoap);exit();
$result = $clientSoap->recuperarInformacoesCancelamento($params);
print_r($result);
?>
SERVER:
<?php
class Params{
public $cpfdocliente;
}
function recuperarInformacoesCancelamento($params){
$dados['informacoesCancelamento']['cancelamentoPermitido'] = true;
$dados['informacoesCancelamento']['percentual'] = 15.00;
$dados['informacoesCancelamento']['observacao'] = 'cancelamento permitido';
return $dados;
}
$options = array('classmap'=>array('recuperarInformacoesCancelamento'=>'Params'));
$server = new SoapServer("soap.wsdl", $options);
$server->addFunction('recuperarInformacoesCancelamento');
$server->handle();
?>
Uso o xampp 1.7.3 ele tem php 5.+
Se alguem puder me esclarecer, ou enviar algum link que me esclareça sobre o erro, fico agradecido.
Obrigado pela paciência!
NoOne? ^^
Tudo bem, o problema esta no wsdl, eu não consegui entender direito isso! Aí pesquisando, descobri o NuSoap, que gera o wsdl pra mim, beleza, funcionou, porém ele é um pouco antigo, e como eu uso o PHP 5.3, ouví dizer que pode dar problemas, pois ele foi feito ainda para as versões 4.x do PHP, se alguém souber de uma solução como o NuSoap, porém atualizada, me ajudaria muito, obrigado!