I'm trying to create a webservice with PHP and nuSoap but everytime I try to execute it I'm getting the error:

XML error parsing SOAP payload on line 1: Not well-formed (invalid token)

Can anyone see what's wrong?

service.php

require 'lib/nusoap.php'; $server = new nusoap_server(); $server->configureWSDL("casamitger" . "urn:casamitger"); $server->wsdl->schemaTargetNamespace = 'urn:casamitger'; include 'functions.php'; //getAvailabilities $server->wsdl->addComplexType('Availabilities','complexType','struct','all','',array( 'StartDate' => array('name' => 'StartDate', 'type' => 'xsd:date'), 'EndDate' => array('name' => 'EndDate', 'type' => 'xsd:date'), 'State' => array('name' => 'State', 'type' => 'xsd:string'), $server->wsdl->addComplexType('ArrayOfAvailabilities', 'complexType', 'array', '', 'SOAP-ENC:Array', array(), array( array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:Availabilities[]')), 'tns:Availabilities'); $server->register( 'getAvailabilities', array( "SessionID" => 'xsd:string', "AccommodationId" => 'xsd:integer' array("return" => 'tns:ArrayOfAvailabilities') $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''; $server->service($HTTP_RAW_POST_DATA);

functions.php

function getAvailabilities($sessionID, $accommodation_code) {
    $connection = mysqli_connect("localhost", "root", "", "casamitger");
    if (authenticate($sessionID)) {
        $user = getUser($sessionID);
        $query = mysqli_query($connection, "SELECT count(AccommodationId) c FROM UserAccommodations WHERE AccommodationId = '$accommodation_code' AND CompanyId = '$user'") or die();
        $row = mysqli_fetch_object($query);
        $count = $row->c;
        if ($count > 0) {
            $query = mysqli_query($connection, "SELECT StartDate,EndDate,State FROM Availabilities WHERE AccommodationId = '$accommodation_code'") or die();
            $n = 0;
            while ($row = mysqli_fetch_object($query)) {
                $result[$n]['StartDate'] = $row->StartDate;
                $result[$n]['EndDate'] = $row->EndDate;
                $result[$n]['State'] = $row->State;
                $n++;
            return $result;

and the client.php

require 'lib/nusoap.php'; include 'functions.php'; $sessionid = '1234'; $accommodation_code = '83081'; $client = new nusoap_client("http://192.168.8.155:8090/ws/service.php?wsdl"); $availabilities = $client->call( 'getAvailabilities', array( "SessionID" => "$sessionid", "AccommodationId" => "$accommodation_code", if ($client->fault) { echo 'Fault'; } else { $err = $client->getError(); if ($err) { echo $err; } else { print_r($servicetypes);

If I call the method getAvailabilities() directly it works but it doesn't through the web service, any help will be appreciated, thanks.

  • 更多

相关推荐 更多相似问题