3
I’m trying to learn how to make one webservice
using this tutorial: http://www.sitepoint.com/web-services-with-php-and-soap-2/
But my server is returning the following:
Error
Response not of type text/xml: text/html
This is my client.php:
<?php
require_once "lib/nusoap.php";
$client = new nusoap_client("soma.wsdl", true);
$error = $client->getError();
if ($error) {
echo "<h2>Constructor error</h2><pre>" . $error . "</pre>";
}
$result = $client->call("soma", array("a" => "1", "b" => "2"));
if ($client->fault) {
echo "<h2>Fault</h2><pre>";
print_r($result);
echo "</pre>";
}
else {
$error = $client->getError();
if ($error) {
echo "<h2>Error</h2><pre>" . $error . "</pre>";
}
else {
echo "<h2>Soma</h2><pre>";
print_r($result);
echo "</pre>";
}
}
?>
And this is my php server.:
<?php
require_once "lib/nusoap.php";
function soma($a, $b) {
return $a + $b;
}
$server = new soap_server();
$server->configureWSDL("resultado", "urn:resultado");
$server->register("soma", // nome da função
array("category" => "xsd:int"), // tipo de entrada (inteiro, string...)
array("return" => "xsd:int"), // tipo de saída
"urn:resultado", // define o namespace
"urn:resultado#soma", // define a ação do SOAP
"rpc", // define o tipo da chamada
"encoded", // define o valor para o atributo 'use'
"Retorna a soma de dois números"); // documentação do que a função faz
$server->service($HTTP_RAW_POST_DATA);
?>
And finally, this is my sum wsdl.:
<definitions xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="urn:resultado" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="urn:resultado">
<types>
<xsd:schema targetNamespace="urn:resultado">
<xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<xsd:import namespace="http://schemas.xmlsoap.org/wsdl/"/>
</xsd:schema>
</types>
<message name="somaRequest">
<part name="category" type="xsd:int"/>
</message>
<message name="somaResponse">
<part name="return" type="xsd:int"/>
</message>
<portType name="resultadoPortType">
<operation name="soma">
<documentation>Retorna a soma de dois números</documentation>
<input message="tns:somaRequest"/>
<output message="tns:somaResponse"/>
</operation>
</portType>
<binding name="resultadoBinding" type="tns:resultadoPortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="soma">
<soap:operation soapAction="urn:resultado#soma" style="rpc"/>
<input>
<soap:body use="encoded" namespace="urn:resultado" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded" namespace="urn:resultado" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<service name="resultado">
<port name="resultadoPort" binding="tns:resultadoBinding">
<soap:address location="http://renanlazarotto.com/server/server.php"/>
</port>
</service>
</definitions>
I can’t understand where the mistake is. What should I do to make the mistake go away? If I put the webservice address in place of the sum.wsdl, this is the result:
Summing up
3
What is expected from the webservice.